C++ 命名要求: 可调用
来自 cppreference.cn
A Callable type is a type for which the INVOKE and INVOKE<R> operations (used by, e.g., std::function, std::bind, and std::thread::thread) are applicable.
|
(since C++17) |
|
(since 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 起) (函数模板) |