Al utilizar enumeraciones fuertemente tipadas en una instrucción de conmutación ¿hay alguna manera de evitar conversiones explícitas a int
?Conmutar sentencias con enumeraciones fuertemente tipadas
/// @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;
}
Desde el proyecto de n3242:
6.4.2 La sentencia switch [stmt.switch]
2 La condición debe ser de tipo integral, enumeración tipo, o de un tipo de clase para lo cual existe una única función de conversión no explícita a tipo integral o de enumeración (12.3).
¿Se tipo de enumeración incluyen inflexible de tipos enumeraciones o son incompatibles con switch
declaraciones, ya que requieren una conversión explícita a int
?
http://ideone.com/ZEJcs - compila sin conversiones. –
posible duplicado de [Encender la clase enum en C++ 0x] (http://stackoverflow.com/questions/6327223/switching-on-enum-class-in-c-0x) – lpapp