次の方法で共有


is_pod クラス

型が POD であるかどうかをテストします。

template<class Ty>
    struct is_pod;

パラメーター

  • Ty
    問い合わせる型。

解説

型 Ty が POD (Plain Old Data) である場合、is_pod<Ty>::value は true です。それ以外の場合は false です。

演算型、列挙型、ポインター型、およびメンバーへのポインター型は、POD です。

POD 型の cv-qualified バージョンは、それ自体が 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>

名前空間: std

参照

関連項目

<type_traits>

その他の技術情報

<type_traits> メンバー