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.

  1. Let derived be a reference bound to static_cast<D&>(*this). Equivalent to return ranges::size(derived) == 0; if D satisfies sized_range. Otherwise, equivalent to return ranges::begin(derived) == ranges::end(derived);.

  2. 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::adjacent_transform_view std::ranges::adjacent_view std::ranges::as_const_view std::ranges::as_rvalue_view std::ranges::cartesian_product_view std::ranges::chunk_view std::ranges::chunk_by_view std::ranges::join_with_view std::ranges::repeat_view std::ranges::slide_view std::ranges::stride_view std::ranges::zip_view std::ranges::zip_transform_view (since C++23)

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] |