Template-Metafunktion zur Erkennung von Template-Spezialisierungen

Inspiriert vondiese Frage, ich frage mich, ob es eine Überprüfung zur Kompilierungszeit gibt, die man einführen kann, um festzustellen, ob zwei vorgegebene Template-Instanziierungen vorliegen:

template <typename T>
class Templ...

typedef Templ<std::string> stringInstance;
typedef Templ<double> doubleInstance;

werden aus der gleichen Definition konstruiert oder wenn sie aus verschiedenen Spezialisierungen derTempl Vorlage

Im Grunde verhält sich die hypothetische Template-Funktion wie folgt:

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);

ist es möglich, diese Art von Metafunktion zu erstellen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage