static_casting an int to enum 而不是直接初始化它有什么好处吗?

Is there any advantage in static_casting an int to enum instead of just initializing it directly?

这样做是否更安全/"better":

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

EDIT :这是用于进程内 and/or 网络通信,其中枚举只是在消息中序列化,然后直接转换。

恕我直言,直接初始化就像:

enum Value {
  kValue = 5,
};

Value e = kValue;

并且 static_cast 和您的初始化与直接初始化相比有缺点。 'kValue' 的初始化可以保护您免受不存在的值的影响,提高可读性等。

我认为,这两种情况是一样的。但第二种情况更具可读性。