is_pod 類別
測試,如果型別是 PODS。
template<class Ty>
struct is_pod;
參數
- Ty
查詢的型別。
備註
如果型別 Ty 是一般舊資料 (POD),is_pod<Ty>::value 是 true 。 否則為 false。
算術型別、列舉型別、指標型別和成員指標型別是 PODS。
POD 型別的 cv 限定版本是本身 POD 型別。
陣列 POD 本身 POD。
結構或等位,所有非靜態資料成員是 PODS,本身 POD,如果有:
沒有使用者宣告的建構函式。
沒有私用或保護的非靜態資料成員。
沒有基底類別。
沒有虛擬函式。
未參考型別的非靜態資料成員。
沒有使用者定義的複製指派運算子。
沒有使用者定義的解構函式。
因此,您可以遞迴地建立包含 POD 結構和陣列的 POD 結構和陣列。
範例
// std_tr1__type_traits__is_pod.cpp
// compile with: /EHsc
#include <type_traits>
#include <iostream>
struct trivial
{
int val;
};
struct throws
{
throws() throw(int)
{
}
throws(const throws&) throw(int)
{
}
throws& operator=(const throws&) throw(int)
{
}
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);
}
需求
標題: <type_traits>
命名空間: std