std::ranges::view_interface<D>::empty
| constexpr bool empty() requires ranges::sized_range<D> || ranges::forward_range<D>; |
(1) | (seit C++20) |
| constexpr bool empty() const requires ranges::sized_range<const D> || ranges::forward_range<const D>; |
(2) | (seit C++20) |
Die Standardimplementierung der Memberfunktion empty() prüft, ob die Größe des Objekts des abgeleiteten Typs 0 ist (falls gültig), oder ob der Anfangs-Iterator und das Sentinel gleich sind.
D sized_range erfüllt. Andernfalls entspricht es return ranges::begin(derived) == ranges::end(derived);.Inhalt |
[edit] Parameter
(keine)
[edit] Rückgabewert
true, wenn die Größe des Objekts des abgeleiteten Typs 0 ist (wenn D std::ranges::sized_range erfüllt), oder sein Anfangs-Iterator und das Sentinel gleich sind, false andernfalls.
[edit] Hinweise
Folgende abgeleitete Typen können die Standardimplementierung von empty verwenden:
- std::ranges::common_view
- std::ranges::drop_view
- std::ranges::drop_while_view
- std::ranges::elements_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::reverse_view
- std::ranges::single_view
- std::ranges::split_view
- std::ranges::take_view
- std::ranges::take_while_view
- std::ranges::transform_view
Obwohl std::ranges::basic_istream_view von std::ranges::view_interface erbt und die Memberfunktion empty() nicht deklariert, kann sie die Standardimplementierung nicht verwenden, da sie weder std::ranges::sized_range noch std::ranges::forward_range erfüllt.
[edit] Beispiel
#include <array> #include <ranges> int main() { constexpr std::array a{0, 1, 2, 3, 4}; static_assert(!std::ranges::single_view(a).empty()); static_assert((a | std::views::take(0)).empty()); static_assert(!(a | std::views::take(5)).empty()); static_assert((a | std::views::drop(5)).empty()); static_assert(!(a | std::views::drop(3)).empty()); static_assert(std::views::iota(0,0).empty()); static_assert(!std::views::iota(0).empty()); }
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3715 | C++20 | empty() unterstützte nur forward_range-Typen |
sized_range-only Typen werden ebenfalls unterstützt |
[edit] Siehe auch
| (C++17) |
prüft, ob der Container leer ist (function template) |
| (C++20) |
prüft, ob ein Range leer ist (Customization Point Objekt) |