Apoyo de tipos (tipos básicos, RTTI, rasgos de tipo)
(Véase también tipo para una visión general del sistema de tipos)
Contenido
|
[editar] Tipos básicos
[editar] Tipos fundamentales definidos por el lenguaje
[editar] Tipos básicos y macros adicionales
Definido en el archivo de encabezado
<cstddef> | |
Tipo entero sin signo devuelto por el operador sizeof. (typedef) | |
Tipo entero con signo devuelto al restar dos punteros. (typedef) | |
(C++11) |
El tipo del literal nullptr. (typedef) |
Constante de puntero nulo definido por la implementación. (constante de macro) | |
(C++11) |
Tipo de datos simple con requerimiento de alineación tan grande como cualquier otro tipo escalar. (typedef) |
Desplazamiento de bytes desde el comienzo de un tipo de diseño estándar al miembro especificado. (macro de función) | |
(C++17) |
El tipo byte . (enum) |
Definido en el archivo de encabezado
<cstdbool> (hasta C++20) | |
Definido en el archivo de encabezado
<stdbool.h> | |
__bool_true_false_are_defined (C++11)(en desuso en C++17) |
Constante de macro para compatibilidad con C, se expande al literal entero 1 (constante de macro) |
Definido en el archivo de encabezado
<cstdalign> (hasta C++20) | |
Definido en el archivo de encabezado
<stdalign.h> | |
__alignas_is_defined (C++11)(en desuso en C++17) |
Constante de macro para compatibilidad con C, se expande al literal entero 1 (constante de macro) |
[editar] Tipos enteros de anchura fija (desde C++11)
[editar] Límites numéricos
Definido en el archivo de encabezado
<limits> | |
Proporciona una interfaz para consultar las propiedades de todos los tipos numéricos fundamentales. (plantilla de clase) |
[editar] Interfaz de límites numéricos de C
[editar] Identificación de tipo en tiempo de ejecución (RTTI)
Contiene la información de algún tipo generada por la implementación. Esta es la clase devuelta por el operador typeid. (clase) | |
(C++11) |
Envoltura alrededor de un objeto type_info , que se puede utilizar como un subíndice en contenedores asociativos y contenedores asociativos no ordenados. (clase) |
Excepción que se produce cuando un argumento en una expresión typeid es nulo. (clase) | |
Excepción que se produce por una expresión dynamic_cast inválida. Por ejemplo, en una conversión de tipo de referencia fallida. (clase) |
[editar] Rasgos de tipo (desde C++11)
Los rasgos de tipo definen una interfaz basada en plantillas en tiempo de compilación para consultar o modificar las propiedades de los tipos.
Intentar especializar una plantilla definida en el archivo de encabezado <type_traits>
resulta en comportamiento indefinido, excepto que std::common_type puede especializarse.
Una plantilla definida en el encabezado <type_traits>
puede instanciarse con un tipo incompleto a menos que se especifique lo contrario, a pesar de la prohibición general de crear instancias de plantillas de biblioteca estándar con tipos incompletos.
[editar] Propiedades de tipos
Definido en el archivo de encabezado
<type_traits> | |
Categorías de tipo primarias | |
(C++11) |
Comprueba si un tipo es void (plantilla de clase) |
(C++14) |
Comprueba si un tipo es std::nullptr_t (plantilla de clase) |
(C++11) |
Comprueba si un tipo T es entero. (plantilla de clase) |
(C++11) |
Comprueba si un tipo T es de punto flotante (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo array (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 unión (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo clase (pero no un tipo unión). (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo función (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo puntero (plantilla de clase) |
(C++11) |
Comprueba si un tipo es una referencia lvalue. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es una referencia rvalue. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un puntero a un objeto miembro no estático (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un puntero a una función miembro no estática (plantilla de clase) |
Categorías de tipo compuestas | |
(C++11) |
Comprueba si un tipo es un tipo fundamental (plantilla de clase) |
(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 de tipo escalar Original: checks if a type is scalar 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 objeto (plantilla de clase) |
(C++11) |
Comprueba si un tipo es de tipo compuesto Original: checks if a type is compound 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 o bien una referencia lvalue o una referencia rvalue (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) |
Propiedades de tipos | |
(C++11) |
Comprueba si un tipo está calificado con el calificador const (plantilla de clase) |
(C++11) |
Comprueba si un tipo está calificado con el calificador volatile (plantilla de clase) |
(C++11) |
Comprueba si un tipo es trivial Original: checks if a type is trivial 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 trivialmente copiable. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo de diseño estándar. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo simple (POD). (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo literal. (plantilla de clase) |
Comprueba si cada bit en la representación de objeto del tipo contribuye a su valor. (plantilla de clase) | |
(C++11) |
Comprueba si un tipo es un tipo de clase que no es una unión y no tiene datos. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es tipo clase polimórfico (plantilla de clase) |
(C++11) |
Comprueba si un tipo es el tipo de clase abstracta Original: checks if a type is abstract class 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++14) |
Comprueba si un tipo es un tipo de clase final. (plantilla de clase) |
(C++17) |
Comprueba si un tipo es un tipo de agregado. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es un tipo aritmético con signo. (plantilla de clase) |
(C++11) |
Comprueba si un tipo es el tipo de aritmética sin signo Original: checks if a type is unsigned 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++20) |
Comprueba si un tipo es un tipo de array de límite conocido. (plantilla de clase) |
(C++20) |
Comprueba si un tipo es un tipo de array de límite desconocido. (plantilla de clase) |
Operaciones admitidas | |
(C++11)(C++11)(C++11) |
Comprueba si un tipo tiene un constructor de argumentos concretos Original: checks if a type has a constructor for specific arguments 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) |
Comprueba si un tipo tiene un constructor por defecto Original: checks if a type has a default constructor 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)(C++11)(C++11) |
Comprueba si un tipo tiene un constructor de copia Original: checks if a type has a copy constructor 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)(C++11)(C++11) |
Comprueba si un tipo tiene un constructor de movimiento Original: checks if a type has a move constructor 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)(C++11)(C++11) |
Comprueba si un tipo tiene un operador de asignación para un argumento específico Original: checks if a type has a assignment operator for a specific argument 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)(C++11)(C++11) |
Comprueba si un tipo tiene un operador de asignación de copia Original: checks if a type has a copy assignment operator 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)(C++11)(C++11) |
Comprueba si un tipo tiene un operador de asignación de movimiento Original: checks if a type has a move assignment operator 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)(C++11)(C++11) |
Comprueba si un tipo tiene un destructor no eliminado (e.g., = delete). (plantilla de clase) |
(C++11) |
Comprueba si un tipo tiene un destructor virtual Original: checks if a type has a virtual destructor 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++17)(C++17)(C++17)(C++17) |
Comprueba si objetos de un tipo pueden intercambiarse con objetos del mismo tipo o diferente tipo. (plantilla de clase) |
Consultas de propiedades | |
(C++11) |
Obtiene los requisitos de alineación del tipo (plantilla de clase) |
(C++11) |
Obtiene el número de dimensiones de un tipo array (plantilla de clase) |
(C++11) |
Obtiene el tamaño de un tipo array a lo largo de una dimensión especificada (plantilla de clase) |
Relaciones de tipos | |
(C++11) |
Comprueba si dos tipos son los mismos (plantilla de clase) |
(C++11) |
Comprueba si un tipo es derivado de otro tipo (plantilla de clase) |
(C++11)(C++20) |
Comprueba si un tipo puede convertirse a otro tipo. (plantilla de clase) |
Comprueba si un tipo puede invocarse (como si lo fuera por std::invoke) con el número de argumentos dado. (plantilla de clase) | |
(C++20) |
Comprueba si dos tipos tienen diseño compatible. (plantilla de clase) |
Comprueba si un tipo es una base (inicial) interconvertible-por-puntero a otro tipo. (plantilla de clase) | |
Comprueba si los objetos de un tipo son interconvertibles-por-puntero con el subobjeto especificado de ese tipo. (plantilla de función) | |
(C++20) |
Comprueba si dos miembros especificados se corresponden mutuamente en la subsecuencia inicial común de dos tipos especificados. (plantilla de función) |
[editar] Modificaciones de tipos
Las plantillas de modificación de tipos crean nuevas definiciones de tipos al aplicar modificaciones en un parámetro de plantilla. El tipo resultante se puede acceder a través de la definición de tipo miembro type
.
Definido en el archivo de encabezado
<type_traits> | |
Especificadores const y volatilidad | |
(C++11)(C++11)(C++11) |
Elimina los especificadores const y/o volatile del tipo dado. (plantilla de clase) |
(C++11)(C++11)(C++11) |
Agrega los especificadores const y/o volatile al tipo dado (plantilla de clase) |
Referencias | |
(C++11) |
Elimina la referencia de un tipo dado. (plantilla de clase) |
(C++11)(C++11) |
Añade referencia lvalue o rvalue al tipo dado. (plantilla de clase) |
Punteros | |
(C++11) |
Elimina el puntero del tipo dado (plantilla de clase) |
(C++11) |
Agrega puntero al tipo dado (plantilla de clase) |
Modificadores de signo | |
(C++11) |
Hace al tipo entero dado con signo (plantilla de clase) |
(C++11) |
Hace al tipo entero dado sin signo (plantilla de clase) |
Arrays | |
(C++11) |
Elimina una dimensión del tipo array dado (plantilla de clase) |
(C++11) |
Elimina todas las dimensiones del tipo array dado (plantilla de clase) |
[editar] Transformaciones misceláneas
Definido en el archivo de encabezado
<type_traits> | |
(C++11) |
Define el tipo adecuado para su uso como almacenamiento sin inicializar para tipos de un tamaño dado (plantilla de clase) |
(C++11) |
Define el tipo adecuado para su uso como almacenamiento sin inicializar para todos los tipos dados (plantilla de clase) |
(C++11) |
Aplica transformaciones de tipo como se cuando pasa un argumento de función por valor (plantilla de clase) |
(C++20) |
Combina std::remove_cv y std::remove_reference. (plantilla de clase) |
(C++11) |
Condicionalmente elimina una sobrecarga de función o especialización de plantilla de la resolución de sobrecargas. (plantilla de clase) |
(C++11) |
Escoge un tipo u otro basado un tipo Booleano en tiempo de compilación (plantilla de clase) |
(C++11) |
Deduce el tipo del resultado de una expresión aritmética mixta (plantilla de clase) |
Determina el tipo común de referencia de un grupo de tipos (plantilla de clase) | |
(C++11) |
Obtiene el tipo subyacente entero para un tipo enumeración dado (plantilla de clase) |
(C++11) |
Deduce el tipo de retorno de una expresión de llamada a la función. (plantilla de clase) |
(C++17) |
Plantilla de alias void variádica. (plantilla de alias) |
(C++20) |
Devuelve el argumento del tipo sin modificarlo. (plantilla de clase) |
[editar] Operaciones en rasgos
Definido en el archivo de encabezado
<type_traits> | |
(C++17) |
Metafunción variádica de AND lógico. (plantilla de clase) |
(C++17) |
Metafunción variádica de OR lógico. (plantilla de clase) |
(C++17) |
Metafunción NOT lógico. (plantilla de clase) |
[editar] Clases auxiliares
Definido en el archivo de encabezado
<type_traits> | |
(C++11) |
Constante en tiempo de compilación del tipo especificado con el valor especificado. (plantilla de clase) |
Están disponibles dos especializaciones de std::integral_constant para el tipo bool:
Definido en el archivo de encabezado
<type_traits> | |
Tipo | Definición |
true_type
|
std::integral_constant<bool, true> |
false_type
|
std::integral_constant<bool, false> |
[editar] Contexto de evaluación constante (desde C++20)
Definido en el archivo de encabezado
<type_traits> | |
(C++20) |
Detecta si la llamada ocurre dentro de un contexto evaluado constante. (función) |
[editar] Véase también
Documentación de C para Biblioteca de apoyo de tipos
|