Namespaces
Variants

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

From cppreference.net
Definiert im Header <experimental/type_traits>
template < class >

struct raw_invocation_type ; //undefined

template < class Fn, class ... ArgTypes >

struct raw_invocation_type < Fn ( ArgTypes... ) > ;
(1) (Library Fundamentals TS)
template < class >

struct invocation_type ; //undefined

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 ) werden wie folgt definiert, wobei T1 der (möglicherweise cv-qualifizierte) Typ von t1 ist und U1 entweder T1& ist, falls t1 ein Lvalue ist, 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 durch t2, ..., tN abgeglichen werden.
  • Wenn N == 1 und f ein Zeiger auf Memberdaten einer Klasse T ist, dann ist der Aufrufparameter U1 .
  • Wenn f ein Objekt vom Klassentyp ist, sind die Aufrufparameter die Parameter, die t1, ..., tN entsprechen, der bestgeeigneten verfügbaren Funktion für die Argumente t1, ..., tN unter den Funktionsaufrufoperatoren und Ersatzaufruffunktionen von f .
  • In allen anderen Fällen sind die Aufrufparameter die Parameter von f , die t1, ..., tN entsprechen.

Wenn ein Argument tI auf eine Ellipse in der Parameterliste der Funktion passt, ist der entsprechende Aufrufparameter das Ergebnis der Anwendung der Standardargument-Promotions auf tI .

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

Inhaltsverzeichnis

Mitgliedertypen

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

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

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

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

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)

Beispiel

Siehe auch

C++ Dokumentation für Reflection TS