この質問に触発されて、与えられた2つのテンプレートのインスタンス化を検出するために導入できるコンパイル時のチェックがあるかどうか疑問に思っています:
template <typename T>
class Templ...
typedef Templ<std::string> stringInstance;
typedef Templ<double> doubleInstance;
同じ定義から構築されているか、Templ
テンプレートの異なる特殊化から構築されている場合
したがって、基本的に仮想テンプレート関数は次のように動作します。
template <typename T>
class Templ
{}
template <>
class Templ<std::string>
{}
template <>
class Templ<double>
{}
template <typename T1,typename T2>
class Belong_To_Same_Templ_Definition
{}
//tests
typedef Templ<std::string> stringInstance;
typedef Templ<double> doubleInstance;
typedef Templ<int> intInstance;
typedef Templ<char> charInstance;
assert( Belong_To_Same_Templ_Definition< intInstance , charInstance >::value == true);
assert( Belong_To_Same_Templ_Definition< intInstance , doubleInstance >::value == false);
assert( Belong_To_Same_Templ_Definition< stringInstance , doubleInstance >::value == false);
この種のメタ関数を作成することは可能ですか?