is_pod — Klasa
Sprawdza, czy typ to POD.
Składnia
template <class T>
struct is_pod;
Parametry
T
Typ do zapytania.
Uwagi
is_pod<T>::value
to true
, jeśli typ T to Zwykłe stare dane (POD). W przeciwnym razie jest to false
.
Typy arytmetyczne, typy wyliczenia, typy wskaźników i wskaźniki do typów składowych to POD.
Kwalifikowana wersja typu zasobnika cv jest sama w sobie typem zasobnika.
Tablica zasobników jest sama pod.
Struktura lub unia, z których wszystkie niestatyczne składowe danych są zasobnikami, jest samo zasobnikiem, jeśli ma:
Nie zadeklarowane przez użytkownika konstruktory.
Brak prywatnych ani chronionych niestacjonanych składowych danych.
Nie mają klas bazowych.
Brak funkcji wirtualnych.
Brak statycznych składowych danych typu odwołania.
Brak zdefiniowanego przez użytkownika operatora przypisania kopiowania.
Brak destruktora zdefiniowanego przez użytkownika.
W związku z tym można rekursywnie tworzyć struktury i tablice zasobników, które zawierają struktury i tablice zasobników.
Przykład
// 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
Wymagania
Nagłówek:<type_traits>
Przestrzeń nazw: std