std::experimental::invocation_type, std::experimental::raw_invocation_type
| Definiert im Header <experimental/type_traits> |
||
| template< class > struct raw_invocation_type; // nicht definiert |
(1) | (library fundamentals TS) |
| template< class > struct invocation_type; // nicht definiert |
(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
fein Zeiger auf eine Memberfunktion einer KlasseTist, dann sind die AufrufparameterU1gefolgt von den Parametern vonf, die vont2, ..., tNübereinstimmen. - Wenn
N == 1undfein Zeiger auf ein Memberdatum einer KlasseTist, dann ist der AufrufparameterU1. - Wenn
fein Objekt vom Klassentyp ist, sind die Aufrufparameter die Parameter, diet1, ..., tNder besten geeigneten Funktion für die Argumentet1, ..., tNunter den Funktionsaufrufoperatoren und Surrogat-Aufruffunktionen vonfentsprechen. - In allen anderen Fällen sind die Aufrufparameter die Parameter von
f, diet1, ..., tNentsprechen.
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 |
| invocation_type<Fn(ArgTypes...)>::type | R(U1, U2, ...), wobei
Nur definiert, wenn |
[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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| C++ Dokumentation für Reflection TS
|