Bagikan melalui


Kelas is_pod

Menguji apakah jenisnya adalah POD.

Sintaks

template <class T>
struct is_pod;

Parameter

T
Jenis yang akan dikueri.

Keterangan

is_pod<T>::value adalah true jika jenis T adalah Data Lama Biasa (POD). Jika tidak, itu adalah false.

Jenis aritmatika, jenis enumerasi, jenis pointer, dan jenis pointer ke anggota adalah POD.

Versi yang memenuhi syarat cv dari jenis POD adalah jenis POD itu sendiri.

Array POD itu sendiri adalah POD.

Struct atau union, yang semua anggota data non-statis-nya adalah POD, adalah POD itu sendiri jika memiliki:

  • Tidak ada konstruktor yang dideklarasikan pengguna.

  • Tidak ada anggota data privat atau non-statis yang dilindungi.

  • Tidak ada kelas dasar.

  • Tidak ada fungsi virtual.

  • Tidak ada anggota data non-statis dari jenis referensi.

  • Tidak ada operator penetapan salinan yang ditentukan pengguna.

  • Tidak ada destruktor yang ditentukan pengguna.

Oleh karena itu, Anda dapat secara rekursif membangun struktur dan array POD yang berisi struct dan array POD.

Contoh

// 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

Persyaratan

Header:<type_traits>

Namespace: std

Lihat juga

<type_traits>