std::ranges::view_interface<D>::operator bool
来自 cppreference.com
< cpp | ranges | view interface
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) 令
derived
为 static_cast<D&>(*this)。requires 子句中的表达式等于 requires { ranges::empty(derived); },函数体等效于 return !ranges::empty(derived);.2) 与 (1) 相同,只是
derived
是 static_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
[编辑] 另请参阅
(C++20) |
检查范围是否为空 (定制点对象) |
如果满足 sized_range 或 forward_range ,则返回派生视图是否为空。(公共成员函数) | |
(C++17) |
检查容器是否为空 (函数模板) |