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

履歴 編集

concept
<ranges>

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

namespace std::ranges {
  template<class R, class T>
  concept output_range = range<R> && output_iterator<iterator_t<R>, T>;
}

概要

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

モデル

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

#include <ranges>
#include <iterator>
#include <concepts>
#include <iostream>
#include <vector>

int main() {
  using namespace std;
  // ostream_iteratorから作ったRangeはoutput_range
  ostream_iterator<int> osi(cout);
  static_assert(ranges::output_range<decltype(views::counted(osi, 5)), int>);

  // constではないコンテナはoutput_range
  static_assert(ranges::output_range<vector<int>&, int>);

  // constなコンテナには書き込めないので、output_rangeではない
  static_assert(!ranges::output_range<const vector<int>&, int>);
}

出力

バージョン

言語

  • C++20

処理系

参照