У меня есть некоторый код шаблона, который я предпочел бы сохранить в файле CPP вместо встроенного в заголовке. Я знаю, что это можно сделать, если вы знаете, какие типы шаблонов будут использоваться. Например:
.h file
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, но хочу портировать на другие среды.