名稱空間
變體
操作

std::experimental::ranges::invoke

來自 cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
通用工具庫
實用元件
函式物件
invoke
超程式設計和型別特徵
帶標籤的對和元組
                          
tag specifiers
                                      
                          
 
定義於標頭檔案 <experimental/ranges/functional>
template< class F, class... Args >
std::result_of_t<F&&(Args&&...)> invoke( F&& f, Args&&... args );
(ranges TS)

呼叫 可呼叫 (Callable) 物件 f 並傳入引數 args,並返回結果,如同透過 return INVOKE(std::forward<F>(f), std::forward<Args>(args)...);,其中 INVOKE(f, t1, t2, ..., tN) 定義如下:

  • std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue,則 INVOKE(f, t1, t2, ..., tN) 等價於 (t1.*f)(t2, ..., tN)
  • 否則,INVOKE(f, t1, t2, ..., tN) 等價於 ((*t1).*f)(t2, ..., tN)
  • std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue,則 INVOKE(f, t1) 等價於 t1.*f
  • 否則,INVOKE(f, t1) 等價於 (*t1).*f

[編輯] 引數

f - 將被呼叫的 Callable 物件
args - 要傳遞給 f 的引數

[編輯] 參閱

(C++17)(C++23)
用給定引數呼叫任何 可呼叫 (Callable) 物件 並可指定返回型別(C++23 起)
(函式模板) [編輯]