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

履歴 編集

customization point object
<ranges>

std::ranges::views::all

namespace std::ranges::views {
  inline constexpr /*unspecified*/ all = /*unspecified*/;     // (1)

  template<viewable_range R>
  using all_t = decltype(all(declval<R>()));                  // (2)
}

概要

  • (1): Rangeへの参照として振る舞うviewを生成するRangeアダプタクロージャオブジェクト
  • (2): allの戻り値の型を得るエイリアステンプレート

allは、元のRange全体を表すview。これは、viewではないRangeをviewとして扱うために利用できる。 Rangeアダプタオブジェクトでも暗黙的に使用され、それによりviewかどうかを気にせず使えるようになっている。

allが生成するviewをまとめて"all view"という。all_tを使えば、allの型を得ることができる。

効果

views::all(E)の効果は次の通り

#include <ranges>
#include <iostream>

int main() {
  using namespace std;
  int a[] = {1, 2, 3, 4, 5};

  for (int i : a | views::all) {
    cout << i;
  }
}

出力

12345

バージョン

言語

  • C++20

処理系

参照