std::experimental::invocation_type, std::experimental::raw_invocation_type
From cppreference.com
< cpp | experimental
| ヘッダ <experimental/type_traits> で定義 |
||
| template< class > struct raw_invocation_type; //未定義 |
(1) | (Library Fundamentals TS) |
| template< class > struct invocation_type; //未定義 |
(2) | (Library Fundamentals TS) |
Callableで定義されている操作INVOKEを用いて、INVOKE(std::declval<Fn>(), std::declval<ArgTypes>()...)のようにFnが引数ArgTypes...で呼び出されたときの呼び出しパラメータ (invocation parameters) を計算する。
式 INVOKE(f, t1, t2, ..., tN) の呼び出しパラメータは以下のように定義される。ここで、T1 は t1 の型 (cv修飾されている可能性がある) であり、U1 は t1 が左辺値であれば T1&、そうでなければ T1&& である。
fがクラスTのメンバ関数へのポインタである場合、呼び出しパラメータはU1に続き、t2, ..., tNにマッチするfのパラメータである。N == 1かつfがクラスTのメンバデータへのポインタである場合、呼び出しパラメータはU1である。fがクラス型のオブジェクトである場合、呼び出しパラメータは、fの関数呼び出し演算子と代理呼び出し関数 (surrogate call functions) の中で、引数t1, ..., tNに対する最適な有効関数にマッチするパラメータである。- それ以外のすべての場合において、呼び出しパラメータは
t1, ..., tNにマッチするfのパラメータである。
引数 tI が関数のパラメータリストの省略記号にマッチする場合、対応する呼び出しパラメータは 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; |
(Library Fundamentals TS) | |
| template< class T > using invocation_type_t = typename invocation_type<T>::type; |
(Library Fundamentals TS) | |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| C++ documentation for Reflection TS
|