Partager via


is_pod Class

Teste si le type est POD.

template<class Ty>
    struct is_pod;

Paramètres

  • Ty
    le type à l'interroger.

Notes

is_pod<Ty>::value est true si le type est Ty des plain old data (POD).Sinon c'est false.

Les types, les types énumération, les types pointeur, et le pointeur d'arithmétique aux types de membres sont POD.

Une version cv-qualifiée d'un type POD est lui-même un type POD.

Un tableau POD est elle-même POD.

Un struct ou une union, toutes les lesquels données membres non statiques sont POD, est lui-même POD si elle a :

  • Pas de constructeurs utilisateur-déclarés.

  • données membre non static pas privées ou protégées.

  • aucune classes de base.

  • aucune fonctions virtuelles.

  • Aucune donnée membre non statique de type référence.

  • aucun opérateur d'assignation de copie défini par l'utilisateur.

  • aucun destructeur défini par l'utilisateur.

Par conséquent, vous pouvez de manière récursive générer les structures et les tableaux POD qui contiennent des structures et des tableaux POD.

Exemple

// 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); 
    } 
 
  

Configuration requise

en-tête : <type_traits>

l'espace de noms : type

Voir aussi

Référence

<type_traits>

Autres ressources

<type_traits> membres