满足条件的多种类型的模板类专门化

时间:2011-12-21 19:22:55

标签: c++ template-specialization

如果我有模板类,如下:

template<typename T>
class Type { /* ... */ };

如果不以任何方式修改Type,是否有一种简单的方法可以将所有这类匹配编译时条件的类型专门化?例如,如果我想为所有整数类型专门化Type,我想做类似的事情(只有有效的东西):

template<typename T>
class Type<std::enable_if<std::is_integral<T>, T>::type> { /* ... */ };

1 个答案:

答案 0 :(得分:6)

这应该有效:

template<typename T, bool B = std::is_integral<T>::value>
class Type;

// doesn't have to be a specialization, although I think it's more clear this way
template<typename T>
class Type<T, false> { /* ... */ };

template<typename T>
class Type<T, true> { /* ... */ };