DLLからテンプレート関数をエクスポートしたい。テンプレートの特殊化方法は次のように使用できることを知っています。
func.hpp
/*declare*/
template<typename T>
DLL_EXPORTS T func(T para);
/*specialization*/
template<>
DLL_EXPORTS int func<int>(int para);
func.cpp
template<>
DLL_EXPORTS int func<int>(int para)
{return para;}
テンプレートの特殊化を使用する場合。func
タイプごとにコードを書き直す必要があります。それは良い解決策ではありません。しかし、これは私がから見つけることができる唯一の方法ですC++ Primer
。
次のように、他の誰かのコードから時々別の方法を見つけました。
func.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 ++標準でサポートされていますか?