Вдохновленный этим вопросом, мне интересно, есть ли какая-то проверка во время компиляции, которую можно ввести, чтобы определить, есть ли два заданных шаблона экземпляры:
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);
возможно ли создать такую метафункцию?
const
, не так ли? - person Seth Carnegie   schedule 09.01.2013Belong_To_Same_Templ_Definition
не выводит ничего полезного, учитывая, насколько мощными являются шаблоны в C++. - person Yakk - Adam Nevraumont   schedule 09.01.2013