std::experimental::ranges:: Invocable, std::experimental::ranges:: RegularInvocable
|
template
<
class
F,
class
...
Args
>
concept
bool
Invocable
=
|
(ranges TS) | |
|
template
<
class
F,
class
...
Args
>
concept bool RegularInvocable = Invocable < F, Args... > ; |
(ranges TS) | |
Invocable
概念规定可调用类型
F
可通过函数模板
ranges::invoke
使用一组参数类型
Args...
进行调用。
RegularInvocable
概念在
Invocable
概念基础上,进一步要求
invoke
表达式需满足等式保持特性,且不得修改函数对象或参数。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
所有要求保持相等性的表达式必须进一步满足 稳定性 要求:对此类表达式进行两次求值时,若输入对象相同且期间未显式修改这些输入对象,则必须获得相等的输出结果。
除非另有说明,在 要求表达式 中使用的每个表达式都必须保持相等性且稳定,且表达式的求值只能修改其非常量操作数。常量操作数不得被修改。
注释
Invocable
与
RegularInvocable
的区别纯粹是语义上的。
随机数生成器可能满足
Invocable
但无法满足
RegularInvocable
(
滑稽示例
和
此类情况
除外)。