std::experimental:: invocation_type, std::experimental:: raw_invocation_type
|
ヘッダーで定義
<experimental/type_traits>
|
||
|
template
<
class
>
struct
raw_invocation_type
;
//未定義
|
(1) | (ライブラリ基盤 TS) |
|
template
<
class
>
struct
invocation_type
;
//未定義
|
(2) | (ライブラリ基盤 TS) |
Fn
が引数
ArgTypes...
で呼び出されたときの
呼び出しパラメータ
を計算します。具体的には
INVOKE
(
std::
declval
<
Fn
>
(
)
,
std::
declval
<
ArgTypes
>
(
)
...
)
のようにして、ここで
INVOKE
は
Callable
で定義された操作です。
式
INVOKE
(
f, t1, t2, ..., tN
)
の
呼び出しパラメータ
は以下のように定義されます。ここで
T1
は
t1
の(CV修飾される可能性のある)型、
U1
は
t1
が左辺値の場合は
T1&
、それ以外の場合は
T1&&
です:
-
fがクラスTのメンバ関数へのポインタである場合、呼び出しパラメータはU1に続き、fのパラメータがt2, ..., tNと対応します。 -
N == 1かつfがクラスTのメンバデータへのポインタである場合、呼び出しパラメータはU1です。 -
fがクラス型のオブジェクトである場合、呼び出しパラメータは、fの関数呼び出し演算子および代理呼び出し関数の中で、引数t1, ..., tNに対する最適な実行可能関数のパラメータとt1, ..., tNが対応するものとなります。 -
その他のすべての場合、呼び出しパラメータは
fのパラメータがt1, ..., tNと対応するものとなります。
引数
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 ; |
(ライブラリファンダメンタルTS) | |
|
template
<
class
T
>
using invocation_type_t = typename invocation_type < T > :: type ; |
(ライブラリファンダメンタルTS) | |
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
C++ documentation
for
Reflection TS
|
|
C++ documentation
for
Reflection TS
|