Skip to content

Latest commit

 

History

History
70 lines (55 loc) · 2.4 KB

all.md

File metadata and controls

70 lines (55 loc) · 2.4 KB

all

  • ranges[meta header]
  • std::ranges::views[meta namespace]
  • cpo[meta id-type]
  • cpp20[meta cpp]
namespace std::ranges::views {
  inline constexpr /*unspecified*/ all = /*unspecified*/;     // (1)

  template<viewable_range R>
  using all_t = decltype(all(declval<R>()));                  // (2)
}
  • viewable_range[link viewable_range.md]
  • declval[link /reference/utility/declval.md]

概要

  • (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;
  }
}
  • views::all[color ff0000]

出力

12345

バージョン

言語

  • C++20

処理系

  • Clang: 13.0.0 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ?
  • Visual C++: 2019 Update 10 [mark verified]

参照