Angenommen, ich habe:Speichermodell der Template-Funktion in Nicht-Template-Klasse?
template <typename T>
class A
{
//Do something with T
};
Ich weiß, dass der Compiler ein class A<T>
für jeden unterschiedlichen T
im Code definiert generieren.
Was, wenn ich:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
Wäre nur eine Definition von class B
aber mehrere Überlastungen von f()
für jede unterschiedliche T
dort sei es mit genannt wird?
Ja. Was könnte es sonst sein? –
Om Assembly level Es gibt keine Klassendefinitionen. Jede Klassenmethode wird mit dem versteckten Parameter "this" zur globalen Funktion kompiliert. Die modellierte Funktion wird für jede instanziierte Art in jeder Kompilierungseinheit zur globalen Funktion kompiliert. –
Mögliche Duplikate? [Klasse mit Template-Funktion, ist die gleiche Klasse?] (Http://stackoverflow.com/questions/11121910/class-with-templated-member-function-is-the-same-class) –