Предполагая, что есть перечисление как это:
enum foo: int {
first,
second
}
Тогда я использую его следующим образом:
foo f(1); // error: cannot initialize a variable of type 'foo' with an rvalue of type 'int'
foo f = foo(1); // OK !
Мне было интересно, в чем разница между этими двумя?
Я понимаю, что вторую версию можно рассматривать как функциональный стиль, но почему это имеет какое-то значение?
Например, если я сделаю это:
class Bar {};
Bar b = Bar(1); // no matching conversion for functional-style cast from 'int' to 'Bar'
Я, очевидно, получаю ошибку, которая имеет смысл. Поэтому это заставляет меня поверить, что для работы второй версии приведенного выше примера foo должно быть преобразование из int
в enum
, определенное где-то, но если такое преобразование есть, то почему я получаю ошибку в первой версии?
Я прошу прощения, если это дубликат. Я подозреваю, что это так.
Это кажется уместным: Это актерский состав или конструкция?
... но не бросить.
Заранее спасибо!