Metafunción de plantillas para detectar especializaciones de plantillas.

Inspirado poresta pregunta, me pregunto si hay alguna verificación en tiempo de compilación que se pueda introducir para detectar si se han dado dos instancias de plantilla:

template <typename T>
class Templ...

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

se construyen a partir de la misma definición, o si se construyen a partir de diferentes especializaciones de laTempl modelo

así que básicamente la función de la plantilla hipotética se comportará así:

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

¿Es posible crear este tipo de metafunción?

Respuestas a la pregunta(1)

Su respuesta a la pregunta