见标题。我有一个模板。我想强制实例化模板的特定实例。我该怎么做呢?
更具体地说,你能强制一个抽象模板类实例化吗?
我可能会详细说明,因为我有同样的问题。就我而言,我正在构建一个库,一些模板实现很大并且包含很多东西,但只为几种类型生成。我想在库中编译它们并导出所有方法,但不要在任何地方都包含带有代码的标头。
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 编译器构建库。