Namespaces
Variants

C++ named requirements: RangeAdaptorObject (since C++20)

From cppreference.net
C++ named requirements

范围适配器对象 是定制点对象,它们接受 viewable_range 作为首个参数并返回一个 view 。部分范围适配器对象是一元的,即它们仅接受一个 viewable_range 作为唯一参数。其他范围适配器对象则接受一个 viewable_range 及其他后续参数。

若一个范围适配器对象仅接受单一参数,则它同时也是一个 RangeAdaptorClosureObject

如果范围适配器对象接受多个参数,它同时支持部分应用:令

  • a 作为这样的范围适配器对象,且
  • args... 作为参数(通常适用于尾随参数),

表达式 a ( args... ) 具有以下特性:

与其他定制点对象类似,令

  • a 为任何范围适配器对象类型的 cv 未限定版本的对象,
  • args... 为满足 a 类型的 operator ( ) 约束的任意参数组,

都是等价的。

这些表达式的结果对象要么是一个 view 对象,要么是一个 RangeAdaptorClosureObject

注释

operator ( ) 不支持限定为 volatile 或 const-volatile 的范围适配器对象类型。在绑定时,数组和函数会被转换为指针。