命名空间
变体
操作

C++ 命名要求: 可调用

来自 cppreference.cn
 
 
C++ 具名要求
基本
类型属性
库范围
可调用 (Callable)




容器 (Container)
容器元素
迭代器 (Iterator)
流 I/O
格式化器 (Formatters)
随机数
并发
范围 (Ranges)
多维视图 (Multidimensional View)
其他

 

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.

INVOKE can be performed explicitly using the library function std::invoke.

(since C++17)

INVOKE<R> can be performed explicitly using the library function std::invoke_r.

(since C++23)

目录

[编辑] 要求

如果类型 T 满足 Callable,则

给定

  • f,类型为 T 的对象,
  • ArgTypes,合适的参数类型列表,
  • R,合适的返回类型。

以下表达式必须有效

表达式 要求
INVOKE<R>(f, std::declval<ArgTypes>()...) 该表达式在未求值上下文中是良构的。

[编辑] 注释

数据成员指针Callable,即使没有发生函数调用。

[编辑] 标准库

此外,以下标准库工具接受任何 Callable 类型(不仅仅是 FunctionObject

(C++11)
任何可复制构造的可调用对象的可复制包装器
(类模板) [编辑]
任何可调用对象的仅移动包装器,该对象在给定的调用签名中支持限定符
(类模板) [编辑]
任何可复制构造的可调用对象的可复制包装器,该对象在给定的调用签名中支持限定符
(类模板) [编辑]
任何可调用对象的非拥有包装器
(类模板) [编辑]
(C++11)
将一个或多个参数绑定到函数对象
(函数模板) [编辑]
(C++20)(C++23)
按顺序将可变数量的参数绑定到函数对象
(函数模板) [编辑]
CopyConstructibleCopyAssignable 引用包装器
(类模板) [编辑]
(C++11)(C++20 中移除)(C++17)
推导使用一组参数调用可调用对象的结果类型
(类模板) [编辑]
(C++11)
管理一个单独的线程
(类) [编辑]
(C++20)
std::thread,支持自动加入和取消
(类) [编辑]
(C++11)
即使从多个线程调用,也只调用函数一次
(函数模板) [编辑]
(C++11)
异步运行函数(可能在新线程中),并返回一个 std::future,其中将保存结果
(函数模板) [编辑]
打包一个函数以存储其返回值以供异步检索
(类模板) [编辑]

[编辑] 参见

检查是否可以使用给定参数类型调用类型(如同通过 std::invoke 调用)
(类模板) [编辑]
指定可调用类型可以使用给定的一组参数类型调用
(概念) [编辑]
(C++17)(C++23)
使用给定参数调用任何 Callable 对象 并可能指定返回类型(自 C++23 起)
(函数模板) [编辑]