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