Heim >Backend-Entwicklung >C++ >Wie erreichen generische C 14-Lambdas typgenerisches Verhalten?
Generische Lambdas in C 14
In C 14 ermöglichen generische Lambdas die Definition von Lambdas mit auto als Argumenttyp und ermöglichen so typgenerisches Verhalten . Das Verständnis ihrer Funktionsweise gibt Aufschluss über die zugrunde liegenden Mechanismen.
Templated Call Operator
Generische Lambdas definieren einen Abschlusstyp mit einem Template-Call-Operator statt einem Nicht-Template-Operator wie C 11 Lambdas. Das heißt, wenn auto in der Parameterliste erscheint, erstellt der Compiler eine Funktionsvorlage für den Aufrufoperator.
Beispiel:
auto glambda = [](auto a) { return a; };
Das obige Lambda erstellt eine Instanz des folgenden Typs:
class /* unnamed */ { public: template<typename T> T operator () (T a) const { return a; } };
Typ Erasure vs. Template Polymorphismus
Generische Lambdas ähneln den Generika von Java, die Typlöschung verwenden. Im Gegensatz zu C-Vorlagen, die mehrere Funktionen mit unterschiedlichen Typen generieren, erstellen generische Lambdas eine einzelne Funktion mit einem typlöschenden Aufrufoperator.
Typparameterliste
Die generischen Lambdas Die Call-Operator-Vorlage enthält eine Vorlagenparameterliste für jedes Vorkommen von auto in der Parameterdeklaration. Der Typ jedes Vorlagenparameters entspricht dem Typ der entsprechenden Variablen.
Fazit:
Generische Lambdas in C 14 ermöglichen typgenerische Programmierung durch die Definition von Lambda-Ausdrücken mit ein Anruf-Operator mit Vorlagen. Dies bietet eine übersichtliche Möglichkeit, Typlöschfunktionen zu erstellen, die den Generika von Java ähneln.
Das obige ist der detaillierte Inhalt vonWie erreichen generische C 14-Lambdas typgenerisches Verhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!