При использовании строго типизированных перечислений в операторе switch есть способ избежать явного приведения к int
?
/// @desc an enumeration of the states that the session can be in.
enum class State
{
Created,
Connected,
Active,
Closed
};
State sesState = session->GetState();
switch (static_cast<int>(sesState))
{
case static_cast<int>(Session::State::Created):
// do stuff.
break;
case static_cast<int>(Session::State::Connected):
// do stuff.
break;
}
Из черновика n3242:
6.4.2 Переключательоператор [stmt.switch]
2 Условие должно быть целого типа, тип перечисления или типа класса, для которого существует одна неявная функция преобразования в целочисленный тип или тип перечисления(12.3).
Включает ли тип перечисления строго типизированные перечисления или они несовместимы с switch
операторами, поскольку требуют явного преобразования в int
?