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

履歴 編集

concept
<ranges>

std::ranges::common_range(C++20)

namespace std::ranges {
  template<class T>
  concept common_range = range<T> && same_as<iterator_t<T>, sentinel_t<T>>;
}

概要

common_rangeは、イテレータと番兵の型が等しいRangeを表すコンセプトである。

標準のコンテナはすべてcommon_rangeのモデルである。

モデル

Tcommon_rangeのモデルとなるのは、Trangeのモデルであり、Tから取得した番兵とイテレータの型が等しい場合である。

#include <ranges>

int main() {
  namespace ranges = std::ranges;
  namespace views = std::views;

  // 無限長のiotaはcommon_rangeではない
  // (イテレータと番兵の型が異なる)
  static_assert(!ranges::common_range<decltype(views::iota(0))>);

  // commonを適用するとcommon_rangeになる
  static_assert(ranges::common_range<decltype(views::iota(0) | views::common)>);
}

出力

バージョン

言語

  • C++20

処理系

関連項目

参照