Предположим, у меня есть:Модель памяти функции шаблона внутри класса без шаблона?
template <typename T>
class A
{
//Do something with T
};
Я знаю, что компилятор будет генерировать class A<T>
для каждого отдельного T
, определенной в коде.
Что делать, если у меня есть:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
Будет ли только одно определение class B
но несколько перегруженные f()
для каждого отдельного T
это называется с?
Да. Что еще это может быть? –
Ом Уровень сборки не содержит определений классов. Каждый метод класса скомпилирован в глобальную функцию со скрытым «этим» параметром. Функция Templated скомпилирована для глобальной функции для каждого экземпляра типа в каждом блоке компиляции. –
Возможный дубликат? [Класс с шаблонной функцией-членом, это тот же класс?] (Http://stackoverflow.com/questions/11121910/class-with-templated-member-function-is-the-same-class) –