最終更新日時(UTC):
が更新

履歴 編集

class
<any>

std::any(C++17)

namespace std {
  class any;
}

概要

要件

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++17
(destructor) デストラクタ C++17

代入

名前 説明 対応バージョン
operator= 代入演算子 C++17
emplace 要素型のコンストラクタ引数から直接構築する C++17
swap 他のanyオブジェクトとデータを入れ替える C++17
reset 有効値を保持していない状態にする C++17

値の観測

名前 説明 対応バージョン
has_value 有効な値を保持しているかを判定する C++17
type 保持している値の型情報を取得する C++17

非メンバ関数

ヘルパ関数

名前 説明 対応バージョン
make_any anyオブジェクトを構築する C++17

値の取り出し

名前 説明 対応バージョン
any_cast 値を取り出す C++17

値の入れ替え

名前 説明 対応バージョン
swap 2つのanyオブジェクトを入れ替える C++17

#include <iostream>
#include <any>

int main()
{
  // int型の値を代入して取り出す
  std::any x = 3;
  int n = std::any_cast<int>(x);

  std::cout << n << std::endl;

  // 文字列を再代入して取り出す
  x = "Hello";
  const char* s = std::any_cast<const char*>(x);

  std::cout << s << std::endl;

  // 間違った型で取り出そうとすると例外が送出される
  try {
    std::any_cast<double>(x);
  }
  catch (std::bad_any_cast& e) {
    std::cout << e.what() << std::endl;
  }
}

出力例

3
Hello
bad any_cast

バージョン

言語

  • C++17

処理系

参照