Supponiamo che io sono:Modello di memoria della funzione modello all'interno della classe non modello?
template <typename T>
class A
{
//Do something with T
};
So che il compilatore genererà un class A<T>
per ogni diversa T
definita nel codice.
Che cosa succede se ho:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
Ci sarebbe solo una definizione di class B
ma più sovraccarichi di f()
per ogni diversa T
si chiama con?
Sì. Cos'altro potrebbe essere? –
Livello di assemblaggio Om non ci sono definizioni di classe. Ogni metodo di classe è compilato alla funzione globale con il parametro nascosto "questo". La funzione basata su modelli viene compilata sulla funzione globale per ogni tipo di istanza, in ogni unità di compilazione. –
Possibile duplicato? [Classe con funzione membro basata su modello, è la stessa classe?] (Http://stackoverflow.com/questions/11121910/class-with-templated-member-function-is-the-same-class) –