std::invocable (自 C++20 起), std::regular_invocable (自 C++20 起)
来自 cppreference.com
定义在头文件 <concepts> 中 |
||
template< class F, class... Args > concept invocable = |
(自 C++20 起) | |
template< class F, class... Args > concept regular_invocable = std::invocable<F, Args...>; |
(自 C++20 起) | |
invocable
概念指定可调用类型 F
可以使用函数模板 std::invoke 调用一组参数 Args...
。
regular_invocable
概念在 invocable
概念的基础上增加了要求,即 invoke
表达式必须是 等价保留的,并且不会修改函数对象或参数。
内容 |
[编辑] 等价保留
标准库概念中 requires 表达式 中声明的表达式要求是 等价保留的(除非另有说明)。
[编辑] 说明
invocable
和 regular_invocable
之间的区别纯粹是语义上的。
随机数生成器可能满足 invocable
,但不能满足 regular_invocable
(滑稽的 除外)。
[编辑] 参考资料
- C++23 标准(ISO/IEC 14882:2024)
- 18.7.2 概念
invocable
[concept.invocable]
- 18.7.2 概念
- 18.7.3 概念
regular_invocable
[concept.regularinvocable]
- 18.7.3 概念
- C++20 标准(ISO/IEC 14882:2020)
- 18.7.2 概念
invocable
[concept.invocable]
- 18.7.2 概念
- 18.7.3 概念
regular_invocable
[concept.regularinvocable]
- 18.7.3 概念
[编辑] 另请参阅
检查类型是否可以使用给定的参数类型调用(如同使用 std::invoke)。 (类模板) |
[编辑] 外部链接
1. | 一个 笑话例子,一个随机数生成器,满足 invocable 和 regular_invocable 。 |