Se recomienda usar Visual Studio 2017

is_pod (Clase)

 

Publicado: octubre de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Comprueba si el tipo es POD.

template <class Ty>
struct is_pod;

Parámetros

Ty
Tipo que se va a consultar.

is_pod<Ty>::value es true si el tipo Ty es 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.

// 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);   
    }   
    /* Output:  
    is_pod<trivial> == true  
is_pod<int> == true  
is_pod<throws> == false  
*/  
  

Encabezado:<type_traits></type_traits>

Espacio de nombres: std

<type_traits></type_traits>

Mostrar: