专注于布尔的真假

时间:2013-12-26 07:11:59

标签: c++ template-specialization

为什么C ++允许 {em> truefalse参数的类型专门化?

template<bool> struct omg { /* can't access anything declared here */ };
template<> struct omg<true> { };
template<> struct omg<false> { };

是否有任何有意义/有用的情况?

1 个答案:

答案 0 :(得分:0)

我认为,没有这种情况。但是标准对模板非类型参数没有任何限制,这些参数适用于条件。顺便说一句,这样的限制是,它应该适用于所有类型。做一些像

这样的事情是不正确的
enum A { first, second };

template<A> struct omg {};
template<> struct omg<first> {};
template<> struct omg<second> {};

这太复杂了,恕我直言。