自定义点对象 (C++20 起)
来自 cppreference.cn
[编辑] 说明
名称 cpo
指代一个自定义点对象,它是一个 const 函数对象,其类型为 字面量 semiregular
类类型。为了说明目的,其 cv-unqualified 版本类型表示为 __cpo_fn
。
所有 __cpo_fn
的实例都相等。无论表示实例的表达式是左值还是右值,以及是否具有 const 限定(但是,volatile 限定的实例不要求可调用),在相同参数上调用不同 __cpo_fn
类型实例的效果是等价的。因此,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)