У меня есть класс признаков, который мне нужно специализировать (и частично специализировать) много раз.Неоднозначная частичная спецификация шаблона
Некоторые частичные специализации перекрываются:
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
, я даже не уверен, что больше это правильный путь ...
Что вы ** действительно ** пытаетесь сделать? – 2010-12-06 21:22:17
Вам следует избегать перекрытия. Это ответ. Вопрос заключается в вопросе Карла: что вы действительно пытаетесь сделать? – 2010-12-06 21:25:50
Прошу прощения, но вы используете C++ неправильно. Пересмотрите свое решение и \ или опубликуйте фактическую проблему, чтобы получить реальный ответ. – Squirrelsama 2010-12-06 21:31:36