table of contents
std::ranges::view_interface::operatorbool(3) | C++ Standard Libary | std::ranges::view_interface::operatorbool(3) |
NAME¶
std::ranges::view_interface::operatorbool - std::ranges::view_interface::operatorbool
Synopsis¶
constexpr explicit operator bool() requires /* see below */;
(1) (since C++20)
constexpr explicit operator bool() const requires /* see below */; (2)
(since C++20)
The default implementation of operator bool member function checks whether
the view
is non-empty. It makes the derived type contextually convertible to bool.
1) Let derived be static_cast<D&>(*this). The expression in the
requires-clause is
equal to requires { ranges::empty(derived); }, and the function body is
equivalent
to return !ranges::empty(derived);.
2) Same as (1), except that derived is static_cast<const
D&>(*this).
Parameters¶
(none)
Return value¶
false if the value of the derived type is empty (determined by
std::ranges::empty),
true otherwise.
Notes¶
In C++20, no type derived from std::ranges::view_interface in the
standard library
provides their own operator bool. Almost all of these types use the default
implementation.
A notable exception is std::ranges::basic_istream_view. For its iterator type
never
satisfies forward_iterator, the view cannot use the inherited operator
bool.
Example¶
// Run this code
#include <array>
#include <iostream>
#include <ranges>
int main()
{
const std::array ints {0, 1, 2, 3, 4};
auto odds = ints | std::views::filter([](int i) { return 0 != 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: true
Has negative numbers: false
See also¶
ranges::empty checks whether a range is empty
(C++20) (customization point object)
empty returns whether the derived view is empty. Provided if it satisfies
(C++20) sized_range or forward_range.
(public member function)
empty checks whether the container is empty
(C++17) (function template)
2024.06.10 | http://cppreference.com |