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

履歴 編集

class
<utility>

std::in_place_type_t(C++17)

namespace std {
  template <class T>
  struct in_place_type_t {
    explicit in_place_type_t() = default;
  };

  template <class T>
  inline constexpr in_place_type_t<T> in_place_type{};
}

概要

in_place_type_tクラスは、オーバーロードのための空クラスである。

標準ライブラリの特定機能において、要素型とそのコンストラクタ引数を直接受け取って構築するための関数オーバーロードを定義するためにある。

備考

デフォルトコンストラクタにexplicitが付いているのは、in_place_type_t<T> x = {};のように=付きの波カッコ初期化を禁止するためである。ユーザーは通常、in_place_type_t<T>型の定数として事前定義されているin_place_type<T>を使用すればよいので、問題にはならない。

#include <iostream>
#include <any>
#include <string>

int main()
{
  std::any x {
    std::in_place_type<std::string>,
    3,
    'z'
  };

  std::cout << std::any_cast<std::string>(x) << std::endl;
}

出力

zzz

バージョン

言語

  • C++17

処理系