enum class test : bool { yes=true, no=false };
template< bool ok >
class A {
};
int main(){
A<test::yes> a;
}
Run Code Online (Sandbox Code Playgroud)
为什么编译失败?(g ++ 4.7)由于C++ 11枚举是强类型的,所以我们应该能够将bool枚举用作模板类型的bool参数吗?
强类型枚举意味着您只能隐式地比较和分配同一枚举类中的值.解决方案是使用非强类型枚举示例:
enum test : bool
{
yes = true,
no = false
};
bool x = test::yes; // ok
Run Code Online (Sandbox Code Playgroud)
或者像Tom Knapen所建议的那样:明确地演绎了枚举
enum class test : bool
{
yes = true,
no = false
};
bool x = static_cast<bool>(test::yes); // ok
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3986 次 |
| 最近记录: |