定制点对象 (自 C++20 起)
来自 cppreference.com
[编辑] 解释
名称 cpo
表示一个定制点对象,它是一个 const 函数对象,其类型是 字面量 semiregular
类类型。为了解释的目的,其类型的 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)