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

Consulte también

<type_traits>