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

Zobacz też

<type_traits>