Я пишу класс с функциями шаблона и пытаясь избавиться от включений в файле .h, переместив их в файл .cpp.Функции шаблона C++ и включает в себя
Декларация моего класса выглядит следующим образом:
// myclass.h
#include <boost/archive/text_oarchive.hpp>
#include <sstream>
class MyClass{
...
template<class T> void my_function(const T& t){
std::ostringstream os;
{
boost::archive::text_oarchive oa(os);
oa & t;
}
do_something(os);
}
}
Учитывая, что я использую метод шаблона, где T может быть что-нибудь, я должен обеспечить определение в заголовке. Можно ли реорганизовать этот код (путем определения функции помощника, я полагаю), чтобы включить перемещение
#include <boost/archive/text_oarchive.hpp>
в файл .cpp?
Большое спасибо
Вы можете это сделать, если явно создать шаблон в файл cpp –
Для неограниченного 'T', no. Если вам нужно только поддерживать ограниченное количество типов, то комментарий Дэвида является ответом. –
Действительно, если множество возможных T было известно, я мог бы создать экземпляр шаблона в файле cpp. Здесь, к сожалению, это не так. – GHL