命名空间
变体
操作

std::ranges::view_interface<D>::operator bool

来自 cppreference.com
 
 
范围库
范围适配器
 
 
constexpr explicit operator bool() requires /* see below */;
(1) (自 C++20 起)
constexpr explicit operator bool() const requires /* see below */;
(2) (自 C++20 起)

operator bool 成员函数的默认实现检查视图是否非空。它使派生类型上下文可转换为 bool.

1)derivedstatic_cast<D&>(*this)。requires 子句中的表达式等于 requires { ranges::empty(derived); },函数体等效于 return !ranges::empty(derived);.
2)(1) 相同,只是 derivedstatic_cast<const D&>(*this).

内容

[编辑] 参数

(无)

[编辑] 返回值

如果派生类型的值为 empty(由 std::ranges::empty 确定),则为 false,否则为 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

[编辑] 另请参阅

检查范围是否为空
(定制点对象)[编辑]
如果满足 sized_rangeforward_range,则返回派生视图是否为空。
(公共成员函数) [编辑]
(C++17)
检查容器是否为空
(函数模板) [编辑]