См. главу. У меня есть шаблон. Я хочу заставить конкретный экземпляр шаблона для создания экземпляра. Как это сделать?
В частности, вы можете принудительно создать абстрактный шаблонный класс?
Я мог бы уточнить, поскольку у меня есть тот же вопрос. В моем случае я создаю библиотеку, некоторые из реализаций шаблонов являются большими и содержат множество материалов, но создаются только для нескольких типов. Я хочу скомпилировать их в библиотеке и экспортировать все методы, но не включать заголовок с кодом везде.
т
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.