| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
| Member functions | ||||
(C++23) | ||||
(C++23) | ||||
operator bool | ||||
constexprexplicit operatorbool() requires/* see below */; | (1) | (since C++20) |
constexprexplicit operatorbool()const requires/* see below */; | (2) | (since C++20) |
The default implementation ofoperatorbool member function checks whether the view is non-empty. It makes the derived typecontextually convertible tobool.
derived bestatic_cast<D&>(*this). The expression in the requires-clause is equal torequires{ranges::empty(derived);}, and the function body is equivalent toreturn!ranges::empty(derived);.derived isstatic_cast<const D&>(*this).Contents |
false if the value of the derived type is empty (determined bystd::ranges::empty),true otherwise.
In C++20, no type derived fromstd::ranges::view_interface in the standard library provides their ownoperatorbool. Almost all of these types use the default implementation.
A notable exception isstd::ranges::basic_istream_view. For its iterator type never satisfiesforward_iterator, the view cannot use the inheritedoperatorbool.
#include <array>#include <iostream>#include <ranges> int main(){conststd::array ints{0,1,2,3,4};auto odds= ints| std::views::filter([](int i){return0!= i%2;});auto negs= ints| std::views::filter([](int i){return i<0;});std::cout<<std::boolalpha<<"Has odd numbers: "<<(!!odds)<<' '<<'\n'<<"Has negative numbers: "<<(!!negs)<<' '<<'\n';}
Output:
Has odd numbers: trueHas negative numbers: false
(C++20) | checks whether a range is empty (customization point object)[edit] |
returns whether the derived view is empty, provided only if it satisfiessized_range orforward_range(public member function)[edit] | |
(C++17) | checks whether the container is empty (function template)[edit] |