共用方式為


is_pod 類別

測試類型是否為 POD。

語法

template <class T>
struct is_pod;

參數

T
要查詢的類型。

備註

如果類型 T 是「一般舊資料」(POD),則 is_pod<T>::valuetrue。 否則為 false

算術類型、列舉類型、指標類型和成員類型的指標是 POD。

POD 類型的 cv-qualified 版本本身是 POD 類型。

POD 的陣列本身是 POD。

結構或等位 (其所有的非靜態資料成員皆為 POD) 本身是 POD,前提是:

  • 沒有使用者宣告的建構函式。

  • 沒有私人或受保護的非靜態資料成員。

  • 沒有基底類別。

  • 沒有虛擬函式。

  • 沒有參考類型的非靜態資料成員。

  • 沒有使用者定義的複製指派運算子。

  • 沒有使用者定義的解構函式。

因此,您可以用遞迴方式建置包含 POD 結構和陣列的 POD 結構和陣列。

範例

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

需求

標頭:<type_traits>

命名空間:std

另請參閱

<type_traits>