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

履歴 編集

class template
<utility>

std::in_place_index_t(C++17)

namespace std {
  template<std::size_t I>
  struct in_place_index_t {
    explicit in_place_index_t() = default;
  };

  template<size_t I>
  inline constexpr in_place_index_t<I> in_place_index{};
}

概要

in_place_index_tクラスは、標準ライブラリの特定機能のコンストラクタに渡すことができる、曖昧性の解消タグである。曖昧性については、例を参照。

備考

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

#include <iostream>
#include <variant>

int main()
{
  // std::variant<int, int> x { 1 }; // どちらの int か曖昧

  std::variant<int, int> x {
    std::in_place_index<0>,
    1
  }; // テンプレート引数の最初の int に 1 を格納して構築

  std::visit([](auto&& arg){std::cout << arg;}, x);
}

出力

1

バージョン

言語

  • C++17

処理系

参照