is_pod Class
如果型別是 POD 的測試。
template<class Ty>
struct is_pod;
參數
- Ty
要查詢的類型。
備註
is_pod<Ty>::value是true如果型別Ty是一般的舊資料 (POD)。 否則就會是false。
算術型別、 列舉型別、 指標型別和成員型別的指標是 POD。
Cv 限定新版 POD 型別本身就是 POD 型別。
陣列本身就是 POD 的 POD。
結構或等位,所有的非靜態資料成員皆 POD,本身就是 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>
Namespace: 標準