5
私はそうのような列挙型を定義する場合は、次のようにのようなブールから1を構築しようとし、その後ブール型の基礎となる "bool"型の列挙型を構築していますか?
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 (...)
はだったと思っていますか?
(直交)提案: 'enum class Foo'と' static_cast() 'を使用してください。 –
lorro
'Foo foo(Foo(ac> 1))'では、2番目の 'Foo'は実際にキャストされています。 – Jarod42
'Foo(ac> 1)'は '(ac> 1)'から 'Foo'の型キャスト結果です。そして 'Foo foo(Foo(ac> 1));'は、 'Foo'のbyfefaultコピーコンストラクタを呼び出すことを伴います。 – sameerkn