Namespaces
Variants

std::experimental:: invocation_type, std::experimental:: raw_invocation_type

From ja.cppreference.net
ヘッダーで定義 <experimental/type_traits>
template < class >

struct raw_invocation_type ; //未定義

template < class Fn, class ... ArgTypes >

struct raw_invocation_type < Fn ( ArgTypes... ) > ;
(1) (ライブラリ基盤 TS)
template < class >

struct invocation_type ; //未定義

template < class Fn, class ... ArgTypes >

struct invocation_type < Fn ( ArgTypes... ) > ;
(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, ... ) 。ただし:

Fn が未評価コンテキストで引数 ArgTypes... で呼び出せる場合にのみ定義される。

invocation_type < Fn ( ArgTypes... ) > :: type R ( U1, U2, ... ) 。ただし:
  • R は std:: result_of_t < Fn ( ArgTypes... ) > である。
  • T1, T2, ... は、上記で定義された INVOKE ( std:: declval < Fn > ( ) , std:: declval < ArgTypes > ( ) ... ) の呼び出しパラメータである。
  • A1, A2, ... は ArgTypes... を表す。
  • Ui は、 std:: declval < Ai > ( ) が右辺値の場合は std:: decay_t < Ai > であり、それ以外の場合は Ti である。

Fn が未評価コンテキストで引数 ArgTypes... で呼び出せる場合にのみ定義される。

ヘルパー型

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
翻訳結果: - "C++ documentation" はC++専門用語のため翻訳せず - "Reflection TS" はC++専門用語(Technical Specification)のため翻訳せず - HTMLタグ、属性、構造は完全に保持 - フォーマットは元のまま維持