Załóżmy, że mam:Model pamięci funkcji szablonu w klasie innej niż szablon?
template <typename T>
class A
{
//Do something with T
};
wiem, że kompilator wygeneruje class A<T>
dla każdego innego T
zdefiniowanego w kodzie.
Co zrobić, jeśli mam:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
Czy istnieje tylko jedna definicja class B
ale wiele przeciążenia f()
dla każdego innego T
to nazywa się?
Tak. Cóż innego mogło być? –
Om Poziom montażu tam nie ma definicji klas. Każda metoda klasy jest kompilowana do funkcji globalnej z ukrytym "tym" parametrem. Funkcja templatowana jest kompilowana do funkcji globalnej dla każdego typu instancji, w każdej jednostce kompilacji. –
Możliwy duplikat? [Klasa z szablonową funkcją składową, czy ta sama klasa?] (Http://stackoverflow.com/questions/11121910/class-with-templated-member-function-is-the-same-class) –