我想从 DLL中导出模板函数。我知道我可以使用以下模板专业化方法。
函数.hpp
/*declare*/
template<typename T>
DLL_EXPORTS T func(T para);
/*specialization*/
template<>
DLL_EXPORTS int func<int>(int para);
函数cpp
template<>
DLL_EXPORTS int func<int>(int para)
{return para;}
如果我使用模板专业化。func
我应该为每种类型重写代码。这不是一个好的解决方案。但这是我能从C++ Primer
.
我偶尔会从别人的代码中找到另一种方法,如下所示。
函数.hpp
/*declare*/
template<typename T>
DLL_EXPORTS T func(T para);
func.cpp
他用来实例化模板。您不能在关键字之后添加。这种方式也适用于类模板。
template<typename T>
DLL_EXPORTS T func (T para)
{return para;}
/*Instantiation*/
template
DLL_EXPORTS int func<int>(int);
template DLL_EXPORTS int func<int>(int)
<>
template
我的问题:我在书中找不到路。所以我担心它有时行不通。 C++ 标准是否支持它?