std::is_scalar
Definido en el archivo de encabezado <type_traits>
|
||
template< class T > struct is_scalar; |
(desde C++11) | |
std::is_scalar
es un UnaryTypeTrait.
Si T
es un tipo escalar (que es un tipo aritmético posiblemente calificado-cv, puntero, puntero a miembro, enumeración, o tipo std::nullptr_t), proporciona la constante miembro value
igual a true. Para cualquier otro tipo, value
es false.
El comportamiento de un programa que añade especializaciones para is_scalar
o is_scalar_v
(desde C++17) no está definido.
Contenido |
[editar] Parámetros de plantilla
T | - | Un tipo a comprobar. |
[editar] Plantilla de variable auxiliar
template< class T > inline constexpr bool is_scalar_v = is_scalar<T>::value; |
(desde C++17) | |
Heredado de std::integral_constant
Constantes miembro
value [estático] |
true si T es un tipo escalar, de lo contrario false. (constante miembro pública estática) |
Funciones miembro
operator bool |
Convierte el objeto a bool, devuelve value . (función miembro pública) |
operator() (C++14) |
Devuelve value . (función miembro pública) |
Tipos miembro
Tipo | Definición |
value_type
|
bool
|
type
|
std::integral_constant<bool, value> |
[editar] Notas
Cada ubicación individual de memoria en el modelo de memoria de C++, incluyendo las posiciones de memoria ocultas utilizadas por las características del lenguaje (por ejemplo puntero a la tabla virtual), es de tipo escalar (o es una secuencia de campos de bits contiguos de longitud diferente de cero). La secuenciación de los efectos secundarios en la evaluación de la expresión, la sincronización intrahilos, y el ordenamiento de las dependencias se definen todos en términos de objetos escalares individuales.
[editar] Posible implementación
template< class T > struct is_scalar : std::integral_constant<bool, std::is_arithmetic<T>::value || std::is_enum<T>::value || std::is_pointer<T>::value || std::is_member_pointer<T>::value || std::is_null_pointer<T>::value> {}; |
[editar] Ejemplo
Salida:
T es un escalar T no es un escalar
[editar] Véase también
(C++11) |
Comprueba si un tipo es de tipo aritmético Original: checks if a type is arithmetic type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo enumeración (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo puntero (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un puntero a una función miembro no estática o a un objeto miembro no estático. (plantilla de clase) |