Template funkion in einer Klasse
-
Morgen,
Ist es eigentlich möglich, in einer Klasse eine Template Funktion
zu definieren?Also etwa so:
class test { private: /* ... */ public: template<class T> add(T &arg); };
-
Ja.
-
Laut Standard ist es erlaubt, allerdings unterstützt es noch nicht jeder Compiler.
-
CStoll schrieb:
Laut Standard ist es erlaubt, allerdings unterstützt es noch nicht jeder Compiler.
Das klingt aber sehr negativ. Sagen wir besser, dass das von Steinzeitcompilern nicht unterstützt wird.

-
Schon mal ausprobiert ?
Meiner Erfahrung nach geht das ...
BTW: Es ist bisweilen hilfreicher, von einem Funktionstemplate zu sprechen und nicht von einer Templatefunktion....

BTW2: Erstmal sieht das furchtbar klasse flexibel aus ... aber im Detail hat man eher selten (außerhalb von Klassentemplates) einen echten Vorteil gegenübernormalen overloads.
Gruß,
Simon2.
-
Simon2 schrieb:
BTW2: Erstmal sieht das furchtbar klasse flexibel aus ... aber im Detail hat man eher selten (außerhalb von Klassentemplates) einen echten Vorteil gegenübernormalen overloads.
Sehe ich auch so.
Aber in meinem Fall müsste ich 8 overloads machen. Und alle 8 hätten
genau den gleichen code
-
xGhost schrieb:
...Aber in meinem Fall müsste ich 8 overloads machen. Und alle 8 hätten
genau den gleichen code
OK, für 8 overloads mit identischem code lohnt sich das schon .... und das klingt auch nach einem der oben schon angedeuteten Ausnahmefälle - oder eben darauf, dass man das besser designen könnte

(mal ein Tipp: Anhängen an einen internen String oder Eintragen in einen string-Container ?)Gruß,
Simon2.
-
Das war jetzt wirklich nur Beispiel Code.
In Wirklichkeit programmiere ich eine boost::format Variante
für UTF-8 Strings. Und überlade den % operator.Gruss,
Ghost// Edit
Da ich alle arten von Zahlen (mein Programm hat
immer gleich
Casten müsste, gibt es halt den selben Code.
-
xGhost schrieb:
...Strings...
wusste ich's doch

ich vermute aber, dass Du damit eigentlich auch nur einen anderen Satz an overloads (oder Funktionstemplates) maskierst - nämlich den, der die eigentlich Umwandlung übernimmt. Wie gesagt: Kann sinnvoll sein ... kann aber auch nur ein Beispiel für "ich reibe meinen Geruch an ein fremdes Ding" sein

Gruß,
Simon2.