Espacios de nombres
Variantes
Acciones

std::is_scalar

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de metaprogramación
Rasgos de tipo
Categorías de tipo
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
is_scalar
(C++11)
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)(en desuso en C++26)
(C++11)(hasta C++20*)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipo
Metafunciones
(C++17)
Operaciones admitidas
Relaciones y consultas de propiedades
Modificaciones de tipos
(C++11)(C++11)(C++11)
Transformaciones de tipos
(C++11)(en desuso en C++23)
(C++11)(en desuso en C++23)
(C++11)
(C++11)(hasta C++20*)(C++17)

(C++11)
(C++17)
Aritmética racional en tiempo de compilación
Secuencias de enteros en tiempo de compilación
 
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

#include <iostream>
#include <type_traits>
 
int main() {
    class cls {};
    std::cout << (std::is_scalar<int>::value
                     ? "T es un escalar"
                     : "T no es un escalar") << '\n';
    std::cout << (std::is_scalar<cls>::value
                     ? "T es un escalar"
                     : "T no es un escalar") << '\n';
}

Salida:

T es un escalar
T no es un escalar

[editar] Véase también

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) [editar]
(C++11)
Comprueba si un tipo es un tipo enumeración
(plantilla de clase) [editar]
Comprueba si un tipo es un tipo puntero
(plantilla de clase) [editar]
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) [editar]