从布尔值构造具有底层"bool"类型的枚举?
constructing enum with underlying "bool" type from a boolean?
如果我像这样定义一个enum:
enum Foo : bool { Left = false, Right = true };
则尝试从布尔值构造一个,如下所示:
int main (int ac, const char **av) {
Foo foo ( ac > 1 );
cout << boolalpha << bool(foo) << endl;
return 0;
}
失败,但可以使用额外的构造函数,如:
Foo foo ( Foo( ac > 1 ) );
为什么会这样?我认为Foo foo (...)
是显式构造函数调用?
Foo (ac> 1);这是c++中最令人烦恼的解析。它是一个函数声明,不做任何事情。
我认为你做不到:
Foo foo ( ac > 1 );
假设您定义Foo enum为:
enum Foo : bool { Left = false };
如果你调用:
Foo foo(true);
没有合适的枚举值来初始化
相关文章:
- 为什么在这种情况下,bool 类型的输出等于 0?
- 将“nullptr”分配给“bool”类型.哪个编译器是正确的
- 在 lambda 表达式中自动推导出的类型是什么,用于修改 bool 类型的向量(特殊容器)
- 使用类型"bool"类型的值初始化类型"int &"(非常量限定)的引用是否是一种黑客?
- 为什么 WinAPI 对 BOOL 类型使用 int(32 位)
- 我可以在C++获得非特化的载体<bool>类型吗?
- unordered_map的默认构造函数,bool类型将设置为false
- 这是自动读写bool类型的正确方法吗?
- 当使用自定义trait和bool类型的c++11枚举时,clang的编译错误
- 为什么在c++中函数指针地址以bool类型打印
- c++ ! !转换为bool类型
- 用于排序容器的隐式转换为显式bool类型
- bool类型变量如何存储在内存中?(c++)
- 带bool类型的字符串初始化
- diab 5.7编译器中的逻辑与运算符返回非bool类型
- 为什么包含未使用的bool类型会影响char类型的引用?
- 结构错误表达式必须为bool类型
- 我可以使用' bool '类型或不透明指针指向导出到c的c++函数中的类吗?
- 为什么sscanf不能正常工作与bool类型
- 从布尔值构造具有底层"bool"类型的枚举?