命名空间
变体
操作

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

来自 cppreference.com
 
 
C++ 命名要求
 

范围适配器闭包对象FunctionObjects,可以通过管道运算符调用:如果 C 是一个范围适配器闭包对象,而 R 是一个 范围,则这两个表达式是 等效

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 相同的常量性和值类别),而 R 是一个 范围 对象,则以下表达式是 等效
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

注意:对于范围适配器对象闭包类型的易变限定或常量易变限定版本,不支持 operator()

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

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

[编辑] 另请参阅

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