Namespaces
Variants

std::ranges:: views:: empty, std::ranges:: empty_view

From cppreference.net
Ranges library
Range adaptors
ヘッダーで定義 <ranges>
template < class T >

requires std:: is_object_v < T >

class empty_view : public ranges:: view_interface < empty_view < T >>
(1) (C++20以降)
namespace views {

template < class T >
constexpr empty_view < T > empty { } ;

}
(2) (C++20以降)
1) 特定の型の要素を一切含まない view を生成するレンジファクトリ。
2) empty_view の変数テンプレート。

目次

メンバー関数

begin
[static]
nullptr を返す
(public static member function)
end
[static]
nullptr を返す
(public static member function)
data
[static]
nullptr を返す
(public static member function)
size
[static]
0 を返す
(public static member function)
empty
[static]
true を返す
(public static member function)
std::ranges::view_interface から継承
(C++23)
範囲の先頭を指す定数イテレータを返す
( std::ranges::view_interface<D> のpublic member function)
(C++23)
範囲の定数イテレータの番兵を返す
( std::ranges::view_interface<D> のpublic member function)
派生ビューが空でないかどうかを返す( ranges::empty が適用可能な場合のみ提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの最初の要素を返す( forward_range を満たす場合に提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの最後の要素を返す( bidirectional_range かつ common_range を満たす場合のみ提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの n 番目の要素を返す( random_access_range を満たす場合のみ提供)
( std::ranges::view_interface<D> のpublic member function)

std::ranges::empty_view:: begin

static constexpr T * begin ( ) noexcept { return nullptr ; }
(C++20以降)

empty_view はどの要素も参照しません。

std::ranges::empty_view:: end

static constexpr T * end ( ) noexcept { return nullptr ; }
(C++20以降)

empty_view はどの要素も参照しません。

std::ranges::empty_view:: data

static constexpr T * data ( ) noexcept { return nullptr ; }
(C++20以降)

empty_view はどの要素も参照しません。

std::ranges::empty_view:: size

static constexpr std:: size_t size ( ) noexcept { return 0 ; }
(C++20以降)

empty_view は常に空です。

std::ranges::empty_view:: empty

static constexpr bool empty ( ) noexcept { return true ; }
(C++20以降)

empty_view は常に空です。

ヘルパーテンプレート

template < class T >
constexpr bool ranges:: enable_borrowed_range < ranges :: empty_view < T >> = true ;
(C++20以降)

この ranges:: enable_borrowed_range の特殊化は、 empty_view borrowed_range を満たすようにします。

注記

empty_view view_interface から front back 、および operator [ ] メンバ関数を取得しますが、これらの呼び出しは常に未定義動作を引き起こします。なぜなら empty_view は常に空であるためです。

継承された operator bool 変換関数は常に false を返します。

#include <ranges>
int main()
{
    namespace ranges = std::ranges;
    ranges::empty_view<long> e;
    static_assert(ranges::empty(e)); // operator bool を使用
    static_assert(0 == e.size());
    static_assert(nullptr == e.data());
    static_assert(nullptr == e.begin());
    static_assert(nullptr == e.end());
    static_assert(nullptr == e.cbegin());
    static_assert(nullptr == e.cend());
}

関連項目

(C++17)
オブジェクトを保持する場合と保持しない場合があるラッパー
(クラステンプレート)
指定された値の単一要素を含む view
(クラステンプレート) (カスタマイゼーションポイントオブジェクト)
range のすべての要素を含む view
(エイリアステンプレート) (レンジアダプタオブジェクト)
他の range の要素からなる view
(クラステンプレート)