is_pod (Clase)
Comprueba si el tipo es POD.
Sintaxis
template <class T>
struct is_pod;
Parámetros
T
Tipo que se va a consultar.
Comentarios
is_pod<T>::value
es true
si el tipo T es de datos antiguos sin formato (POD). De lo contrario, es false
.
Los tipos aritméticos, tipos de enumeración, tipos de puntero y el puntero a tipos de miembro son POD.
Una versión cv completa de un tipo POD es en sí misma un tipo POD.
Una matriz de POD es en sí misma POD.
Una estructura o unión cuyos miembros de datos no estáticos son todos POD, es en sí misma POD si reúne estas condiciones:
No hay ningún constructor declarado por el usuario.
No hay ningún miembro de datos no estáticos privado o protegido.
Ninguna clase base.
No hay funciones virtuales.
No hay ningún miembro de datos no estáticos de tipo de referencia.
No hay ningún operador de asignación de copia definido por el usuario.
No hay ningún destructor definido por el usuario.
Por lo tanto, puede compilar recursivamente estructuras y matrices POD que contienen estructuras y matrices POD.
Ejemplo
// std__type_traits__is_pod.cpp
// compile with: /EHsc
#include <type_traits>
#include <iostream>
struct trivial {
int val;
};
struct throws {
throws() {} // User-declared ctor, so not POD
int val;
};
int main() {
std::cout << "is_pod<trivial> == " << std::boolalpha
<< std::is_pod<trivial>::value << std::endl;
std::cout << "is_pod<int> == " << std::boolalpha
<< std::is_pod<int>::value << std::endl;
std::cout << "is_pod<throws> == " << std::boolalpha
<< std::is_pod<throws>::value << std::endl;
return (0);
}
is_pod<trivial> == true
is_pod<int> == true
is_pod<throws> == false
Requisitos
Encabezado:<type_traits>
Espacio de nombres: std