std::has_unique_object_representations
Definido en el archivo de encabezado <type_traits>
|
||
template< class T > struct has_unique_object_representations; |
(desde C++17) | |
std::has_unique_object_representations
es un UnaryTypeTrait.
Si T
es TriviallyCopyable y dos objetos cualquiera de tipo T
con el mismo valor tienen la misma representación de objeto, proporciona la constante miembro value
igual a true. Para cualquier otro tipo, value
es false.
Para los propósitos de este rasgo, dos arrays tienen el mismo valor si sus elementos tienen los mismos valores, dos clases que no son uniones tienen el mismo valor si sus subobjetos directos tienen el mismo valor, y dos uniones tienen el mismo valor si tienen el mismo miembro activo y el valor de ese miembro es el mismo.
Está definido por la implementación cuales tipos escalares satisfacen este rasgo, pero se garantiza que tipos enteros sin signo (hasta C++20) que no usen bits de relleno tendrán representaciones de objeto únicas.
El comportamiento está indefinido si T
es un tipo incompleto excepto (posiblemente calificado-cv) void o array de límite desconocido.
El comportamiento de un programa que añade especializaciones para has_unique_object_representations
o has_unique_object_representations_v
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 has_unique_object_representations_v = |
(desde C++17) | |
Heredado de std::integral_constant
Constantes miembro
value [estático] |
true si T tiene representaciones de objeto únicas, 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
Este rasgo se introdujo para hacer posible determinar si un tipo puede ser resumido (hashed) correctamente al resumir su representación de objeto como un array de bytes.
[editar] Ejemplo
#include <iostream> #include <type_traits> struct foo { char c; float f; short st; int i; }; struct bar { int a; int b; }; int main() { std::cout << std::boolalpha << "Tiene foo representaciones de objeto únicas? " << std::has_unique_object_representations_v<foo> << '\n' << "Tiene bar representaciones de objeto únicas? " << std::has_unique_object_representations_v<bar> << '\n'; }
Posible salida:
Tiene foo representaciones de objeto únicas? false Tiene bar representaciones de objeto únicas? true
[editar] Véase también
(C++11) |
Comprueba si un tipo es un tipo de diseño estándar. (plantilla de clase) |
(C++11) |
Objeto función de dispersión (hash ). (plantilla de clase) |