Freigeben über


is_pod-Klasse

Testet, ob der Typ POD ist.

Syntax

template <class T>
struct is_pod;

Parameter

T
Der abzufragende Typ.

Hinweise

is_pod<T>::value ist true, wenn der Typ T Plain Old Data (POD) ist. Andernfalls ist der Wert false.

Arithmetische Typen, Enumerationstypen, Zeigertypen und Zeiger auf Membertypen sind POD.

Eine cv-qualifizierte Version eines POD-Typs ist selbst ein POD-Typ.

Ein Array von POD ist selbst POD.

Eine Struktur oder Union, all deren nicht statische Datenmember POD sind, ist selbst POD, wenn sie Folgendes aufweist:

  • Keine benutzerdeklarierten Konstruktoren

  • Keine privaten oder geschützten nicht statischen Datenmember

  • Keine Basisklassen

  • Keine virtuellen Funktionen

  • Keine nicht statischen Datenmember des Verweistyps

  • Keinen benutzerdefinierten Kopierzuweisungsoperator

  • Keinen benutzerdefinierten Destruktor

Aus diesem Grund können Sie rekursiv POD-Strukturen und -Arrays erstellen, die POD-Strukturen und -Arrays enthalten.

Beispiel

// 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

Anforderungen

Header:<type_traits>

Namespace: std

Siehe auch

<type_traits>