Skip to content

Latest commit

 

History

History
66 lines (51 loc) · 2.18 KB

in_place_t.md

File metadata and controls

66 lines (51 loc) · 2.18 KB

in_place_t

  • utility[meta header]
  • std[meta namespace]
  • class[meta id-type]
  • cpp17[meta cpp]
namespace std {
  struct in_place_t {
    explicit in_place_t() = default;
  };

  inline constexpr in_place_t in_place {};
}

概要

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

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

備考

デフォルトコンストラクタにexplicitが付いているのは、in_place_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;
}
  • std::in_place[color ff0000]
  • std::optional[link /reference/optional/optional.md]
  • p.value()[link /reference/optional/optional/value.md]

出力

AAA

バージョン

言語

  • C++17

処理系

参照