Шаблонная специализация для шаблонного типа
У меня есть структура, которая содержит черту о типе:
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; };
1 ответ
Решение
Вы можете частично специализировать x_trait
шаблон для всех специализаций tt_type
шаблон:
template<typename T>
struct x_trait<tt_type<T>> { static const bool has_x = false; };