最終更新日時:
が更新

履歴 編集

type-alias
<ranges>

std::ranges::range_common_reference_t(C++23)

namespace std::ranges {
  template<range R>
  using range_common_reference_t = iter_common_reference_t<iterator_t<R>>;
}

概要

任意のRange型Rから、そのRangeのイテレータの共通参照型(iter_common_reference_t)を取得する。

備考

  • このエイリアステンプレートはC++23に対する欠陥報告 (LWG 3860) として追加されたものであり、コンパイラは早期に対応している場合がある。そのため、C++20モードでも使用できる可能性がある。

#include <ranges>
#include <vector>

int main() {
  static_assert(std::same_as<std::ranges::range_common_reference_t<std::vector<int>>, int&>);
}

出力

バージョン

言語

  • C++23

処理系

参照

  • LWG Issue 3860. range_common_reference_t is missing
    • C++23で、range_reference_trange_const_reference_trange_rvalue_reference_tに対応するrange_common_reference_t<ranges>に追加された。この仕様はC++23で導入されたが、欠陥報告 (DR) であるためコンパイラは早期に対応しており、C++20モードでも使用できる場合がある