Namespaces
Variants

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

ja.cppreference.net より
 
 
レンジライブラリ
レンジアダプタ
 
ヘッダ <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)
から継承 ranges::view_interface
(C++23)
範囲の先頭へのconstイテレータを返します
(パブリックメンバ関数の std::ranges::view_interface<D>)
(C++23)
範囲のconstイテレータに対する番兵を返します
(パブリックメンバ関数の std::ranges::view_interface<D>)
派生ビューが空でないかどうかを返します、ただし ranges::empty が適用可能な場合に限ります
(パブリックメンバ関数の std::ranges::view_interface<D>)
派生ビューの最初の要素を返します、ただし、それが forward_range
(パブリックメンバ関数の std::ranges::view_interface<D>)
派生ビューの最後の要素を返します、ただし、それが bidirectional_range および common_range
(パブリックメンバ関数の std::ranges::view_interface<D>)
n番目 要素を返します、ただし、それが random_access_range
(パブリックメンバ関数の std::ranges::view_interface<D>)

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
(クラステンプレート)