如果我这样定义一个枚举:
enum Foo : bool { Left = false, Right = true };
然后尝试像这样从 bool 值构造一个:
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 foo(ac> 1);
这就是C++ most vexing parse的情况。这是什么都不做的函数声明。