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

履歴 編集

concept
<ranges>

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

namespace std::ranges {
  template<class T>
  concept bidirectional_range = forward_range<T> && bidirectional_iterator<iterator_t<T>>;
}

概要

bidirectional_rangeは、イテレータがbidirectional_iteratorであるRangeを表すコンセプトである。

モデル

Tbidirectional_rangeのモデルとなるのは、Tforward_rangeのモデルであり、かつそのイテレータがbidirectional_iteratorのモデルである場合である。

#include <ranges>
#include <forward_list>
#include <list>

int main() {
  using namespace std;
  // listはbidirectional_range
  static_assert(ranges::bidirectional_range<list<int>>);

  // forward_listはbidirectional_rangeではなく、forward_range
  static_assert(!ranges::bidirectional_range<forward_list<int>>);
  static_assert(ranges::forward_range<forward_list<int>>);
}

出力

バージョン

言語

  • C++20

処理系

参照