is_pod – třída
Testuje, jestli je typ POD.
Syntaxe
template <class T>
struct is_pod;
Parametry
T
Typ, na který chcete odeslat dotaz.
Poznámky
is_pod<T>::value
je-li true
typ T je Plain Old Data (POD). Jinak je false
to .
Aritmetické typy, typy výčtů, typy ukazatelů a ukazatel na členské typy jsou POD.
Kvalifikovaná verze typu POD je sama o sobě typem POD.
Pole podu je sám o sobě.
Struktura nebo sjednocení, jejichž nestatické datové členy jsou POD, je sám pod, pokud obsahuje:
Žádné uživatelem deklarované konstruktory.
Žádné soukromé ani chráněné nestatické datové členy.
Žádné základní třídy.
Žádné virtuální funkce.
Žádné nestatické datové členy referenčního typu.
Žádný operátor přiřazení kopírování definovaný uživatelem.
Žádný uživatelem definovaný destruktor.
Proto můžete rekurzivně sestavit struktury a pole POD, které obsahují struktury a pole POD.
Příklad
// 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
Požadavky
Header:<type_traits>
Namespace: std