如果我这样定义一个枚举:
enum Foo : bool { Left = false, Right = true };
Run Code Online (Sandbox Code Playgroud)
然后尝试从布尔值构造一个,如下所示:
int main (int ac, const char **av) {
Foo foo ( ac > 1 );
cout << boolalpha << bool(foo) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它失败了,但是使用了一个额外的构造函数,如下所示:
Foo foo ( Foo( ac > 1 ) );
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我以为Foo foo (...) 是一个显式的构造函数调用?