std::ranges::view_interface::empty - cppreference.com (original) (raw)
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.
Let derived be a reference bound to static_cast<D&>(*this). Equivalent to return ranges::size(derived) == 0; if
Dsatisfies sized_range. Otherwise, equivalent to return ranges::begin(derived) == ranges::end(derived);.Same as (1), except that derived is static_cast<const D&>(*this).
[edit] 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.
[edit] 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.
[edit] Example
[edit] 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 |
[edit] See also
| | checks whether the container is empty (function template) [edit] | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | | checks whether a range is empty(customization point object)[edit] |