std::ranges::view_interface<D>:: empty
constexpr
bool
empty
(
)
requires ranges:: sized_range < D > || ranges:: forward_range < D > ; |
(1) | (since C++20) |
constexpr
bool
empty
(
)
const
requires ranges:: sized_range < const D > || ranges:: forward_range < const D > ; |
(2) | (since C++20) |
The default implementation of
empty()
member function checks whether the object of the derived type's size is
0
(if valid), or whether the beginning iterator and the sentinel compare equal.
D
satisfies
sized_range
. Otherwise, equivalent to
return
ranges::
begin
(
derived
)
==
ranges::
end
(
derived
)
;
.
Parameters
(none)
Return value
true
if the size of the object of the derived type is
0
(if
D
satisfies
std::ranges::sized_range
), or its beginning iterator and the sentinel compare equal,
false
otherwise.
Notes
Following derived types may use the default implementation of
empty
:
- 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
Although
std::ranges::basic_istream_view
inherits from
std::ranges::view_interface
and does not declare the
empty()
member function, it cannot use the default implementation, because it never satisfies neither
std::ranges::sized_range
nor
std::ranges::forward_range
.
Example
#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()); }
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 3715 | C++20 |
empty()
only supported
forward_range
types
|
sized_range
-only types are also supported
|
See also
(C++17)
|
checks whether the container is empty
(function template) |
(C++20)
|
checks whether a range is empty
(customization point object) |