名前空間
変種
操作

std::ranges::views::all, std::ranges::views::all_t

From cppreference.com
< cpp‎ | ranges
 
 
Rangesライブラリ
Rangeアダプタ
 
ヘッダ <ranges> で定義
inline constexpr /* 不明 */ all = /* 不明 */;
(1) (C++20以降)
template< ranges::viewable_range R >
using all_t = decltype(views::all(std::declval<R>()));
(2) (C++20以降)
1) RangeAdaptorObjectRangeAdaptorClosureObjectでもあります)であり、その引数であるrangeのすべての要素を含むviewを返します。
Rの式eが与えられた場合、式views::all(e)
2) viewable_range型の適切なview型を計算します。

[編集]

#include <iostream>
#include <ranges>
#include <type_traits>
#include <vector>
 
int main()
{
    std::vector<int> v{0, 1, 2, 3, 4, 5};
    for (int n : std::views::all(v) | std::views::take(2))
        std::cout << n << ' ';
    std::cout << '\n';
 
    static_assert(std::is_same<
        decltype(std::views::single(42)),
        std::ranges::single_view<int>
        >{});
 
    static_assert(std::is_same<
        decltype(std::views::all(v)),
        std::ranges::ref_view<std::vector<int, std::allocator<int>>>
        >{});
 
    int a[]{1, 2, 3, 4};
    static_assert(std::is_same<
        decltype(std::views::all(a)),
        std::ranges::ref_view<int[4]>
        >{});
 
    static_assert(std::is_same<
        decltype(std::ranges::subrange{std::begin(a) + 1, std::end(a) - 1}),
        std::ranges::subrange<int*, int*, std::ranges::subrange_kind(1)>
        >{});
}

出力

0 1

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3724 C++20 views::all は、一部のムーブ専用ビューでハードエラーになる可能性がある 正しく制約されます
P2415R2 C++20 views::all は、ビューではないrvalue range に対して subrange を返していました それに対して owning_view を返します

[編集] 関連項目

要素を持たない空の view
(クラステンプレート) (変数テンプレート)[編集]
指定された値の単一要素を含む view
(クラステンプレート) (カスタマイゼーションポイントオブジェクト)[編集]
何らかのrangeの唯一の所有権を持つ view
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)