几个星期休息之后,我正在尝试使用David Vandevoorde和Nicolai M. Josuttis 所着的模板 - 完整指南来扩展和扩展我的模板知识,我现在想要了解的是模板的显式实例化.
我实际上并没有这样的机制问题,但我无法想象我想要或想要使用此功能的情况.如果有人能向我解释,我将不仅仅是感激.
见标题.我有一个模板.我想强制模板的特定实例进行实例化.我该怎么做呢?
更具体地说,您可以强制抽象模板类进行实例化吗?
我可能会详细说明,因为我有同样的问题.在我的情况下,我正在构建一个库,一些模板实现很大,包含很多东西,但只生成几种类型.我想在库中编译它们并导出所有方法,但不包括带代码的头文件.
即:
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 ...
}
Run Code Online (Sandbox Code Playgroud)
我当然可以引用库中的所有方法来强制它们进行编译和导出,但是不希望向库添加不需要的代码,比如项的参数格式和调用它们的代码等.
????? 具体来说,我正在为多个版本的MSC和GCC以及英特尔编译器构建库.