is_pod Class

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 de Plain (POD).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

Vea también

Referencia

<type_traits>

Otros recursos

miembros de <type_traits>