std::experimental::invocation_type, std::experimental::raw_invocation_type
出自 cppreference.com
< cpp | experimental
| 定義於標頭檔 <experimental/type_traits> |
||
| template< class > struct raw_invocation_type; //未定義 |
(1) | (函式庫基礎 TS) |
| template< class > struct invocation_type; //未定義 |
(2) | (函式庫基礎 TS) |
當 Fn 以參數 ArgTypes... 呼叫時,計算其呼叫參數(invocation parameters),如同 INVOKE(std::declval<Fn>(), std::declval<ArgTypes>()...),其中 INVOKE 是定義於 Callable(可呼叫物)中的操作。
表達式 INVOKE(f, t1, t2, ..., tN) 的呼叫參數定義如下,其中 T1 是 t1 的型別(可能含有 cv 限定詞),若 t1 為左值則 U1 為 T1&,否則為 T1&&。
- 若
f為類別T的成員函式指標,則呼叫參數為U1後接f中與t2, ..., tN相匹配的參數。 - 若
N == 1且f為類別T的成員資料指標,則呼叫參數為U1。 - 若
f為類別型別的物件,則呼叫參數為在f的函式呼叫運算子與代理呼叫函式中,針對引數t1, ..., tN的最佳可行函式所匹配的參數。 - 在所有其他情況下,呼叫參數為
f中與t1, ..., tN相匹配的參數。
若引數 tI 匹配函式參數列表中的省略號(ellipsis),則對應的呼叫參數為將預設引數提升應用於 tI 後的結果。
Fn 與 ArgTypes 中的所有型別皆可為任何完整型別、未知邊界的陣列,或(可能含有 cv 限定詞的)void。
目錄 |
[編輯] 成員型別
| 成員型別 | 定義 |
| raw_invocation_type<Fn(ArgTypes...)>::type | R(T1, T2, ...),其中
僅在 |
| invocation_type<Fn(ArgTypes...)>::type | R(U1, U2, ...),其中
僅在 |
[編輯] 輔助型別
| template< class T > using raw_invocation_type_t = typename raw_invocation_type<T>::type; |
(函式庫基礎 TS) | |
| template< class T > using invocation_type_t = typename invocation_type<T>::type; |
(函式庫基礎 TS) | |
[編輯] 範例
| 本節尚不完整 理由:無範例 |
[編輯] 參閱
| C++ 文件 關於 Reflection TS
|