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

履歴 編集

class
<utility>

std::in_place_t(C++17)

namespace std {
  struct in_place_t {
    explicit in_place_t() = default;
  };

  inline constexpr in_place_t in_place {};
}

概要

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

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

備考

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

#include <iostream>
#include <optional>
#include <string>

int main()
{
  // stringクラスのコンストラクタ引数3と'A'をとり、
  // optionalクラス内でstring型のオブジェクトを生成する。
  std::optional<std::string> p {std::in_place, 3, 'A'};

  std::cout << p.value() << std::endl;
}

出力

AAA

バージョン

言語

  • C++17

処理系