C++ 命名要求: RangeAdaptorClosureObject (自 C++20 起)
来自 cppreference.cn
范围适配器闭包对象 是 FunctionObjects,可通过管道运算符调用:如果 C 是范围适配器闭包对象,而 R 是 range
,则以下两个表达式等价
C(R) R | C
两个范围适配器闭包对象可以通过 operator| 链接以生成另一个范围适配器闭包对象:如果 C 和 D 是范围适配器闭包对象,则 C | D 生成一个范围适配器闭包对象 E,具有以下属性
- E 存储 C 和 D 的副本,分别通过来自 std::forward<decltype((C))>(C) 和 std::forward<decltype((D))>(D) 的直接非列表初始化。如果此类初始化无效,则 C | D 也无效。
- 设 c 和 d 是存储的副本(具有与 E 相同的常量性和值类别),而 R 是一个
range
对象,则以下表达式等价
d(c(R)) R | c | d E(R) R | E // R | (C | D)
注意: operator() 不支持范围适配器对象闭包类型的 volatile 限定或 const-volatile 限定版本。
类型与以下对象之一相同的对象(忽略 cv 限定)是范围适配器闭包对象
- 一元范围适配器对象,
|
(自 C++23 起) |
- 通过范围适配器对象绑定尾随参数的结果,以及
- 通过 operator| 链接两个范围适配器闭包对象的结果。
[编辑] 参见
用于定义范围适配器闭包对象的辅助基类模板 (类模板) |