Sdílet prostřednictvím


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 falseto .

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

Viz také

<type_traits>