Шаблонная специализация для шаблонного типа

У меня есть структура, которая содержит черту о типе:

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_types? Сейчас мой единственный выход - перечислить все типы:

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; };
Другие вопросы по тегам