C++ 命名要求: Callable
來自 cppreference.com
可呼叫 (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 起) (函式模板) |