У меня есть класс черт, который мне нужно специализировать (и частично специализировать) много раз.
Некоторые частичные специализации перекрываются:
template< typename T > struct C { };
template< typename T1, typename T2 > struct TRAIT { };
template< typename T > struct TRAIT< T, T > { };
template< typename T1, typename T2 > struct TRAIT< C<T1>, C<T2> > { };
int main( ) {
// ERROR! could be both TRAIT<T,T> [with T = C<int>]
// and TRAIT<T1,T2> [with T1 = T2 = int]
TRAIT< C<int>, C<int> > foo;
return 0;
};
Как я должен получить такой же результат с рабочим кодом?
Я сошел с ума от enable_if
и is_same
, я даже больше не уверен, что это правильный путь ...