命名空间
变体
操作

C++ 命名要求: RangeAdaptorClosureObject (C++20 起)

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
并发
(C++11)
Ranges
RangeAdaptorClosureObject(范围适配器闭包对象)
(C++20)
多维视图
其他

 

范围适配器闭包对象函数对象,可通过管道操作符调用:如果 C 是一个范围适配器闭包对象,而 R 是一个 range,则以下两个表达式是等价的

C(R)
R | C

两个范围适配器闭包对象可以通过 operator| 链接起来,以生成另一个范围适配器闭包对象:如果 CD 是范围适配器闭包对象,则 C | D 会生成一个具有以下属性的范围适配器闭包对象 E

  • E 存储了 CD 的副本,分别从 std::forward<decltype((C))>(C)std::forward<decltype((D))>(D) 直接非列表初始化。如果此类初始化无效,则 C | D 也无效。
  • cd 是存储的副本(具有与 E 相同的 constness 和值类别),R 是一个 range 对象,则以下表达式是等价的
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

注意:范围适配器对象闭包类型的 volatile-qualified 或 const-volatile-qualified 版本不支持 operator()

其类型与以下对象之一相同的对象(忽略 cv 限定符)是范围适配器闭包对象:

  • 一元范围适配器对象,
(C++23 起)
  • 通过范围适配器对象绑定尾随参数的结果,以及
  • 通过 operator| 链接两个范围适配器闭包对象的结果。

[编辑] 另请参阅

用于定义范围适配器闭包对象的辅助基类模板
(类模板) [编辑]