У меня есть код шаблона, который я бы предпочел сохранить в файле CPP вместо встроенного в заголовок. Я знаю, что это можно сделать, если вы знаете, какие типы шаблонов будут использоваться. Например:Сохранение определений функций шаблонов C++ в файле .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 :: сделать шаблон функции используется только в Интс и std :: strings, поэтому эти определения означают, что приложение будет связано.
Мой вопрос - это неприятный взлом или это будет работать с другими компиляторами/линкерами? Я использую этот код только с VS2008 в настоящий момент, но мне нужно будет подключиться к другим средам.
Я понятия не имел, что это возможно - интересный трюк! Это помогло бы некоторым недавним задачам узнать об этом - ура! – xan 2008-09-22 16:00:23
Вещь, которая топает меня, - это использование `do` в качестве идентификатора: p – Quentin 2015-01-14 10:00:46
Я сделал somerhing, подобный gcc, но все еще исследую – Nick 2015-09-25 16:01:03