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