is_pod (Clase)
Comprueba si el tipo es POD.
template<class Ty>
struct is_pod;
Parámetros
- Ty
El tipo a ver.
Comentarios
is_pod<Ty>::value es true si el tipo Ty es datos heredado (POD) de Plain. Si no es false.
Los tipos aritméticos, tipos de enumeración, los tipos de puntero, y el puntero a los tipos de miembro son POD.
Una versión cv- calificada de un tipo POD es en sí mismo un tipo POD.
Una matriz de POD es en sí mismo POD.
Struct o union, todos los cuyos miembros de datos no estáticos son POD, es en sí mismo POD si tiene:
Los constructores usuario- declarados.
Ningún private o miembros de datos no estáticos protegidos.
Ninguna clase base.
Las funciones virtuales.
Ningún miembro de datos no estáticos de tipo de referencia.
Ningún operador de asignación de copia definido por el usuario.
Un constructor definido por el usuario.
Por consiguiente, puede compilar de forma recursiva los structs y matrices de POD que contienen structs y matrices de POD.
Ejemplo
// std_tr1__type_traits__is_pod.cpp
// compile with: /EHsc
#include <type_traits>
#include <iostream>
struct trivial
{
int val;
};
struct throws
{
throws() throw(int)
{
}
throws(const throws&) throw(int)
{
}
throws& operator=(const throws&) throw(int)
{
}
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);
}
Requisitos
Encabezado: <type_traits>
Espacio de nombres: std