Я знаю, что можно сделать функцию шаблона:
template<typename T>
void DoSomeThing(T x){}
и можно сделать шаблон класса:
template<typename T>
class Object
{
public:
int x;
};
но возможно ли сделать класс не в шаблоне, а затем сделать функцию в этом классе шаблоном? То есть:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
или что-то в той степени, где класс не является частью шаблона, но функция?
Смотрите здесь: Шаблоны , методы шаблонов , Шаблоны-члены, Шаблоны функций-членов
источник
Да, функции-члены шаблона совершенно легальны и полезны во многих случаях.
Единственное предостережение в том, что функции-члены шаблона не могут быть виртуальными.
источник
Самый простой способ - поместить объявление и определение в один и тот же файл, но это может привести к превышению размера исполняемого файла. Например
Также возможно поместить определение шаблона в отдельные файлы, т.е. поместить их в файлы .cpp и .h. Все, что вам нужно сделать, это явно включить создание экземпляра шаблона в файлы .cpp. Например
источник