std::ranges::views::empty, std::ranges::empty_view
From cppreference.com
| ヘッダ <ranges> で定義 |
||
| template<class T> requires std::is_object_v<T> |
(1) | (C++20以降) |
| namespace views { template<class T> |
(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 メンバ関数) |
| (C++23) |
範囲の定数イテレータの番兵を返す ( std::ranges::view_interface<D> の public メンバ関数) |
| 派生ビューが空でないかどうかを返す。ranges::empty が適用可能な場合にのみ提供される ( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが forward_range を満たす場合に、派生ビューの最初の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが bidirectional_range と common_range の両方を満たす場合にのみ、派生ビューの最後の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが random_access_range を満たす場合にのみ、派生ビューの n番目の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
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)); // uses 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(クラステンプレート) (カスタマイゼーションポイントオブジェクト) | |
| (C++20) |
rangeのすべての要素を含む view(エイリアステンプレート) (rangeアダプタオブジェクト) |
| (C++20) |
他の何らかのrangeの要素の view(クラステンプレート) |