Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
Definiert im Header <experimental/type_traits>
template< class >

struct raw_invocation_type; // nicht definiert

template< class Fn, class... ArgTypes >

struct raw_invocation_type<Fn(ArgTypes...)>;
(1) (library fundamentals TS)
template< class >

struct invocation_type; // nicht definiert

template< class Fn, class... ArgTypes >

struct invocation_type<Fn(ArgTypes...)>;
(2) (library fundamentals TS)

Berechnet die Aufrufparameter, wenn Fn mit den Argumenten ArgTypes... aufgerufen wird, wie in INVOKE(std::declval<Fn>(), std::declval<ArgTypes>()...), wobei INVOKE die in Callable definierte Operation ist.

Die Aufrufparameter des Ausdrucks INVOKE(f, t1, t2, ..., tN) sind wie folgt definiert, wobei T1 der (möglicherweise cv-qualifizierte) Typ von t1 und U1 T1& ist, wenn t1 ein lvalue ist, und andernfalls T1&&.

  • Wenn f ein Zeiger auf eine Memberfunktion einer Klasse T ist, dann sind die Aufrufparameter U1 gefolgt von den Parametern von f, die von t2, ..., tN übereinstimmen.
  • Wenn N == 1 und f ein Zeiger auf ein Memberdatum einer Klasse T ist, dann ist der Aufrufparameter U1.
  • Wenn f ein Objekt vom Klassentyp ist, sind die Aufrufparameter die Parameter, die t1, ..., tN der besten geeigneten Funktion für die Argumente t1, ..., tN unter den Funktionsaufrufoperatoren und Surrogat-Aufruffunktionen von f entsprechen.
  • In allen anderen Fällen sind die Aufrufparameter die Parameter von f, die t1, ..., tN entsprechen.

Wenn ein Argument tI mit einer Ellipse in der Parameterliste der Funktion übereinstimmt, ist der entsprechende Aufrufparameter das Ergebnis der Anwendung der Standardargumentbeförderungen auf tI.

Fn und alle Typen in ArgTypes können beliebige vollständige Typen, Arrays unbekannter Größe oder (möglicherweise cv-qualifizierte) void sein.

Inhalt

[bearbeiten] Membertypen

Mitgliedertyp Definition
raw_invocation_type<Fn(ArgTypes...)>::type R(T1, T2, ...), wobei

Nur definiert, wenn Fn im nicht-ausgewerteten Kontext mit den Argumenten ArgTypes... aufgerufen werden kann.

invocation_type<Fn(ArgTypes...)>::type R(U1, U2, ...), wobei

Nur definiert, wenn Fn im nicht-ausgewerteten Kontext mit den Argumenten ArgTypes... aufgerufen werden kann.

[bearbeiten] Hilfstypen

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)

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

C++ Dokumentation für Reflection TS