std::ranges::view_interface<D>::operator bool
constexpr explicit operator bool() requires /* see below */; | (1) | (since C++20) |
constexpr explicit operator bool() const requires /* see below */; | (2) | (since C++20) |
Реализация по умолчанию члена-функции operator bool проверяет, непуст ли просмотр. Она делает производный тип контекстуально преобразуемым к bool.
derived равно static_cast<D&>(*this). Выражение в require-описании равно requires { ranges::empty(derived); }, а тело функции эквивалентно return !ranges::empty(derived);.derived равно static_cast<const D&>(*this).Параметры
(нет)
Возвращаемое значение
false если значение производного типа пустое (определяется std::ranges::empty), true в противном случае.
Примечания
В C++20 ни один тип, производный от std::ranges::view_interface в стандартной библиотеке, не предоставляет собственную реализацию operator bool. Почти все эти типы используют реализацию по умолчанию.
Заметным исключением является std::ranges::basic_istream_view. Так как его тип итератора никогда не удовлетворяет forward_iterator, просмотр не может использовать унаследованную реализацию operator bool.
Пример
#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';
}Вывод:
Has odd numbers: true Has negative numbers: false
См. также
|
(C++20) | проверяет, пуст ли диапазон (объект-точка кастомизации) |
|
(C++20) | возвращает, пуст ли производный просмотр. Предоставляется, если он удовлетворяет sized_range или forward_range. (публичный член-функция) |
|
(C++17) | проверяет, пуст ли контейнер (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/view_interface/operator_bool