为什么C ++允许 {em> true
和false
参数的类型专门化?
template<bool> struct omg { /* can't access anything declared here */ };
template<> struct omg<true> { };
template<> struct omg<false> { };
是否有任何有意义/有用的情况?
答案 0 :(得分:0)
我认为,没有这种情况。但是标准对模板非类型参数没有任何限制,这些参数适用于条件。顺便说一句,这样的限制是,它应该适用于所有类型。做一些像
这样的事情是不正确的enum A { first, second };
template<A> struct omg {};
template<> struct omg<first> {};
template<> struct omg<second> {};
这太复杂了,恕我直言。