自定义点对象 (C++20 起)
来自 cppreference.cn
[编辑] 解释
名称 cpo
表示一个自定义点对象,它是一个字面*半正则*类类型的 const 函数对象。为了说明的目的,其类型的 cv-无限定版本表示为 __cpo_fn
。
__cpo_fn
的所有实例都相等。在相同参数上调用 __cpo_fn
类型的不同实例的效果是等效的,无论表示实例的表达式是左值还是右值,以及是否具有 const 限定符 (但是,不要求可以调用 volatile 限定的实例)。因此,cpo
可以自由复制,并且其副本可以互换使用。
给定一组类型 Args...,如果 std::declval<Args>()... 满足上述 cpo 参数的要求,则 __cpo_fn 建模
- std::invocable<__cpo_fn, Args...>,
- std::invocable<const __cpo_fn, Args...>,
- std::invocable<__cpo_fn&, Args...>, 和
- std::invocable<const __cpo_fn&, Args...>.
否则,__cpo_fn
的函数调用运算符不参与重载解析。
[编辑] 参见
- RangeAdaptorObject (RAO)
- RangeAdaptorClosureObject (RACO)