C++ 命名要求: Callable
来自 cppreference.cn
可调用 (Callable) 类型是一种可以对其执行 INVOKE 和 INVOKE<R> 操作的类型(例如,由 std::function、std::bind 和 std::thread::thread 使用)。
|
(C++17 起) |
|
(C++23 起) |
目录 |
[编辑] 要求
类型 T
满足 Callable 如果
给定
-
f
,类型为T
的对象, -
ArgTypes
,合适的参数类型列表, -
R
,合适的返回类型。
以下表达式必须有效
表达式 | 要求 |
---|---|
INVOKE<R>(f, std::declval<ArgTypes>()...) | 该表达式在未求值上下文中是良构的。 |
[编辑] 注意
数据成员指针是 Callable,即使没有函数调用发生。
[编辑] 标准库
此外,以下标准库工具接受任何 Callable 类型(而不仅仅是 FunctionObject)
(C++11) |
任何可复制构造的可调用对象的包装器 (类模板) |
(C++23) |
任何支持给定调用签名中限定符的可调用对象的仅移动包装器 (类模板) |
(C++26) |
任何可复制构造的可调用对象的包装器,支持给定调用签名中的限定符 (类模板) |
(C++26) |
任何可调用对象的非拥有包装器 (类模板) |
(C++11) |
将一个或多个参数绑定到函数对象 (函数模板) |
(C++20)(C++23) |
按顺序将可变数量的参数绑定到函数对象 (函数模板) |
(C++11) |
可复制构造 (CopyConstructible) 和 可复制赋值 (CopyAssignable) 的引用包装器 (类模板) |
(C++11)(C++20 中已移除)(C++17) |
推导调用可调用对象与一组参数的结果类型 (类模板) |
(C++11) |
管理一个独立的线程 (类) |
(C++20) |
支持自动连接和取消的 std::thread (类) |
(C++11) |
即使从多个线程调用,也只调用一次函数 (函数模板) |
(C++11) |
异步(可能在新线程中)运行一个函数并返回一个将保存结果的 std::future (函数模板) |
(C++11) |
封装一个函数,以异步检索其返回值 (类模板) |
[编辑] 参见
检查一个类型是否可以使用给定参数类型进行调用(如同通过 std::invoke) (类模板) | |
(C++20) |
指定可调用类型可以使用给定的一组参数类型进行调用 (概念) |
(C++17)(C++23) |
使用给定参数调用任何 可调用 (Callable) 对象 并可能指定返回类型(自 C++23 起) (函数模板) |