2013-12-19 2 views
1

У меня есть структура, которая содержит признак о типе:специализация шаблона для шаблонного типа

template<typename T> struct x_trait { static const bool has_x = true; }; 

Это правильно для всех типов, но для определенного типа шаблона. Для этого определенного типа шаблона я хочу изменить признак:

template<> struct x_trait<tt_type<int>> { static const bool has_x = false; }; 

Пока что так хорошо. Но сам tt_type принимает разные параметры шаблона. Есть ли способ установить x_trait для всех шаблонов tt_type s? Сейчас мой единственный выход, чтобы перечислить все типы:

template<> struct x_trait<tt_type<char>> { static const bool has_x = false; }; 
template<> struct x_trait<tt_type<short>> { static const bool has_x = false; }; 
template<> struct x_trait<tt_type<int>> { static const bool has_x = false; }; 
template<> struct x_trait<tt_type<long>> { static const bool has_x = false; }; 

ответ

4

Вы можете частично специализировать x_trait шаблон для всех специализаций tt_type шаблона:

template<typename T> 
struct x_trait<tt_type<T>> { static const bool has_x = false; }; 
Смежные вопросы