模板类型的模板特化

时间:2013-12-19 11:22:08

标签: c++ templates template-specialization

我有一个包含类型特征的结构:

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?现在我唯一的出路是列出所有类型:

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 个答案:

答案 0 :(得分:4)

您可以为x_trait模板的所有专精部分专门化tt_type模板:

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