std::to_underlying
De cppreference.com
Definido en el archivo de encabezado <utility>
|
||
template< class Enum > constexpr std::underlying_type_t<Enum> to_underlying( Enum e ) noexcept; |
(desde C++23) | |
Convierte una enumeración a su tipo subyacente. Es equivalente a return static_cast<std::underlying_type_t<Enum>>(e);.
Contenido |
[editar] Parámetros
e | - | Valor de enumeración a convertir. |
[editar] Valor de retorno
El valor entero del tipo subyacente de Enum
, convertido de e
.
[editar] Notas
std::to_underlying
puede usarse para evitar convertir una enumeración a un tipo entero distinto de su tipo subyacente.
[editar] Ejemplo
Ejecuta este código
#include <cstdint> #include <iomanip> #include <iostream> #include <type_traits> #include <utility> int main() { enum class E1 : char { e }; static_assert(std::is_same_v<char, decltype(std::to_underlying(E1::e))>); enum struct E2 : long { e }; static_assert(std::is_same_v<long, decltype(std::to_underlying(E2::e))>); enum E3 : unsigned { e }; static_assert(std::is_same_v<unsigned, decltype(std::to_underlying(e))>); enum class MascaraDeColor : std::uint32_t { rojo = 0xFF, verde = (rojo << 8), azul = (verde << 8), alfa = (azul << 8) }; std::cout << std::hex << std::uppercase << std::setfill('0') << std::setw(8) << std::to_underlying(MascaraDeColor::rojo) << '\n' << std::setw(8) << std::to_underlying(MascaraDeColor::verde) << '\n' << std::setw(8) << std::to_underlying(MascaraDeColor::azul) << '\n' << std::setw(8) << std::to_underlying(MascaraDeColor::alfa) << '\n'; // std::underlying_type_t<MascaraDeColor> x = MascaraDeColor::alfa; // ERROR: no hay conversión [[maybe_unused]] std::underlying_type_t<MascaraDeColor> y = std::to_underlying(MascaraDeColor::alfa); // de acuerdo }
Salida:
000000FF 0000FF00 00FF0000 FF000000
[editar] Véase también
(C++11) |
Obtiene el tipo subyacente entero para un tipo enumeración dado (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo enumeración (plantilla de clase) |
(C++23) |
Comprueba si un tipo es un tipo enumeración con ámbito (plantilla de clase) |