Есть ли какое-либо преимущество в static_casting int для enum вместо простой его инициализации? - PullRequest
1 голос
/ 09 марта 2020

Разве это безопаснее / "лучше" сделать:

enum ENUM { // can be enum class too
...
};
int incoming_value_from_other_process;
auto e = static_cast<ENUM>(incoming_value_from_other_process);

, чем

auto e = ENUM(incoming_value_from_other_process); // more compact and readable, faster to type

РЕДАКТИРОВАТЬ : это для внутрипроцессного и / или сетевое взаимодействие, в котором перечисления просто сериализуются в сообщениях, а затем непосредственно преобразуются.

1 Ответ

2 голосов
/ 09 марта 2020

Имхо, прямая инициализация выглядит так:

enum Value {
  kValue = 5,
};

Value e = kValue;

И есть недостаток static_cast и ваша инициализация по сравнению с прямой инициализацией. Инициализация с помощью kValue защищает вас от несуществующего значения, улучшает читаемость и т. Д. c.

Я думаю, что оба случая одинаковы. Но второй случай более читабелен.

...