У меня есть код шаблона, который я бы предпочел сохранить в файле CPP вместо встроенного в заголовок. Я знаю, что это можно сделать, если вы знаете, какие типы шаблонов будут использоваться. Например:
.h файл
class foo
{
public:
template <typename T>
void do(const T& t);
};
.cpp файл
template <typename T>
void foo::do(const T& t)
{
// Do something with t
}
template void foo::do<int>(const int&);
template void foo::do<std::string>(const std::string&);
Обратите внимание на последние две строки - функция шаблона foo:: do используется только с ints и std:: strings, поэтому эти определения означают, что приложение будет ссылаться.
Мой вопрос - это неприятный взлом или это будет работать с другими компиляторами/линкерами? Я использую этот код только с VS2008 в настоящий момент, но мне нужно будет переносить в другие среды.