См. название. У меня есть шаблон. Я хочу принудительно создать конкретный экземпляр шаблона. Как мне это сделать?
В частности, можете ли вы заставить абстрактный класс шаблона создать экземпляр?
Могу уточнить, так как у меня тот же вопрос. В моем случае я создаю библиотеку, некоторые из реализаций шаблонов большие и включают в себя множество вещей, но генерируются только для нескольких типов. Я хочу скомпилировать их в библиотеке и экспортировать все методы, но не включать везде шапку с кодом.
ie:
template<class T>
OS_EXPORT_DECL class MyTmpl
{
T *item1;
public:
inline T *simpleGetT() { return(item1); } /* small inline code in here */ }
T *doSomeReallyBigMergeStuff(T *b); // note only declaration here
};
// *** implementation source file only seen inside library
template<class T>
MyTmpl<T>::doSomeReallyBigMergeStuff(T *b)
{
... a really big method, but don't want to duplicate it,
so it is a template ...
}
Я мог бы, конечно, сослаться на все методы внутри библиотеки, что заставит их компилировать и экспортировать, но желание состоит не в том, чтобы добавить в библиотеку ненужный код, такой как форматирование аргументов для элементов и код для их вызова и т. д.
????? в частности, я создаю библиотеку для нескольких версий компиляторов MSC и GCC и Intel.