命名空间
变体
操作

C++ 命名需求: 可调用

来自 cppreference.com
 
 
C++ 命名需求
 

一个 可调用 类型是指 INVOKEINVOKE<R> 操作(例如,由 std::functionstd::bindstd::thread::thread 使用)适用的类型。

INVOKE 可以使用库函数 std::invoke 显式执行。

(自 C++17 起)

INVOKE<R> 可以使用库函数 std::invoke_r 显式执行。

(自 C++23 起)

内容

[编辑] 需求

如果类型 T 满足 可调用,则

给定

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

以下表达式必须有效

表达式 需求
INVOKE<R>(f, std::declval<ArgTypes>()...) 该表达式在未评估的上下文中是格式良好的。

[编辑] 注释

指向数据成员的指针可调用 的,即使没有执行任何函数调用。

[编辑] 标准库

此外,以下标准库设施接受任何 可调用 类型(不仅仅是 函数对象

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

[编辑] 另请参阅

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