enum class test : bool { yes=true, no=false };
template< bool ok >
class A {
};
int main(){
A<test::yes> a;
}
为什么编译失败? (g ++ 4.7)由于C ++ 11枚举是强类型的,所以我们应该能够使用bool枚举作为模板类型的bool参数吗?
答案 0 :(得分:7)
强类型枚举意味着您只能隐式地比较和分配同一枚举类中的值。解决方案是使用非强类型枚举示例:
enum test : bool
{
yes = true,
no = false
};
bool x = test::yes; // ok
或者按照Tom Knapen的建议:明确地施放枚举
enum class test : bool
{
yes = true,
no = false
};
bool x = static_cast<bool>(test::yes); // ok