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 empty()-Elementfunktion überprüft, ob die Größe des Objekts des abgeleiteten Typs 0 ist (falls gültig), oder ob der Startiterator und der Sentinel gleich sind.
derived eine Referenz, die an static_cast<D&>(*this) gebunden ist. Äquivalent zu return ranges::size(derived) == 0;, wenn D sized_range erfüllt. Andernfalls äquivalent zu return ranges::begin(derived) == ranges::end(derived);.derived static_cast<const D&>(*this) ist.Rückgabewert
true
wenn die Größe des Objekts des abgeleiteten Typs
0
beträgt (falls
D
std::ranges::sized_range
erfüllt), oder sein Startiterator und der Sentinel gleich verglichen werden,
false
andernfalls.
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
| (seit C++26) |
Obwohl
std::ranges::basic_istream_view
von
std::ranges::view_interface
erbt und die
empty()
Memberfunktion nicht deklariert, kann es die Standardimplementierung nicht verwenden, da es weder
std::ranges::sized_range
noch
std::ranges::forward_range
erfüllt.
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()); }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 3715 | C++20 |
empty()
unterstützte nur
forward_range
-Typen
|
sized_range
-nur Typen werden ebenfalls unterstützt
|
Siehe auch
|
(C++17)
|
prüft, ob der Container leer ist
(Funktions-Template) |
|
(C++20)
|
prüft, ob ein Range leer ist
(Customization Point Object) |