std::underlying_type
De cppreference.com
<metanoindex/>
<tbody> </tbody>| Definido no cabeçalho <type_traits>
|
||
template< class T > struct underlying_type; |
(desde C++11) | |
Define um membro
type typedef de tipo que é o tipo subjacente para a enumeração T. Original:
Defines a member typedef
type of type that is the underlying type for the enumeration T. The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Tipos de membro
Notas
Cada tipo de enumeração tem um tipo subjacente, que pode ser
Original:
Each enumeration type has an underlying type, which can be
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
1. Especificado explicitamente (com escopo e enumerações sem escopo)
Original:
1. Specified explicitly (both scoped and unscoped enumerations)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2. Omitido, caso em que é
int para enumerações de escopo ou uma implementação do tipo definido pelo integral capaz de representar todos os valores da enum (para enumerações sem escopo)Original:
2. Omitted, in which case it is
int for scoped enumerations or an implementation-defined integral type capable of representing all values of the enum (for unscoped enumerations)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Exemplo
#include <iostream>
#include <type_traits>
enum e1 {};
enum class e2: int {};
int main() {
bool e1_type = std::is_same<
unsigned
,typename std::underlying_type<e1>::type
>::value;
bool e2_type = std::is_same<
int
,typename std::underlying_type<e2>::type
>::value;
std::cout
<< "underlying type for 'e1' is " << (e1_type?"unsigned":"non-unsigned") << '\n'
<< "underlying type for 'e2' is " << (e2_type?"int":"non-int") << '\n';
}
Saída:
underlying type for 'e1' is unsigned
underlying type for 'e2' is int
