std::invocable, std::regular_invocable
来自 cppreference.cn
定义于头文件 <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) (类模板) |
[编辑] 外部链接
一个笑话示例,展示了同时满足 invocable 和 regular_invocable 的随机数生成器。 |