template - codegenerierung
-
hallo leute
folgendes beispiel:
template<int value> class test { public: int func1(int x) { return x + value; } int func2(int x) { return x; } };wird hier func1 und func2 jedes mal erzeugt wenn ich fuer den template parameter einen neuen wert verwende ?
oder kann man davon ausgehen das der compiler merkt das der code von func2 unabhaengig vom template wert ist und den code nur einmal erzeugt. bei inline funktionen ist es noch recht egal. aber wie sieht es aus, wenn die funktion sehr viel code enthaelt ?Meep Meep
-
Es sollte eigentlich jedes Mal ein neuer Code aus dem Template instanziiert werden, aber der Compiler kann da gut optimieren.
-
Mittlerweile sind die Compiler (oder besser die Linker) intelligent genug, dass der Code für Methoden, die nicht von Templateparametern abhängen (wie
func2) nur einmal für alle Klasseninstanzen des Templates generiert werden. Den Namen dieser Technik weiß ich aber nicht mehr genau, es war irgendwas mit "Template" und "folding".