命名空间
变体
操作

C++ 命名要求: Callable

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




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

 

可调用 (Callable) 类型是一种可以对其执行 INVOKEINVOKE<R> 操作的类型(例如,由 std::functionstd::bindstd::thread::thread 使用)。

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

(C++17 起)

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

(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)
按顺序将可变数量的参数绑定到函数对象
(函数模板) [编辑]
可复制构造 (CopyConstructible)可复制赋值 (CopyAssignable) 的引用包装器
(类模板) [编辑]
(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 起)
(函数模板) [编辑]