Looking for c++ Keywords? Try Ask4Keywords

C++Lambdas


Syntax

  • [ default-capture , capture-list ] ( Argumentliste ) veränderliche Attribute für Throw-Spezifikation -> Rückgabetyp { lambda-body } // Reihenfolge der Lambda-Bezeichner und Attribute
  • [ Erfassungsliste ] ( Argumentliste ) { Lambda-Body } // Allgemeine Lambda-Definition.
  • [=] ( argument-list ) { lambda-body } // Erfasst alle benötigten lokalen Variablen nach Wert.
  • [&] ( argument-list ) { lambda-body } // Erfasst alle benötigten lokalen Variablen per Verweis.
  • [ capture-list ] { lambda-body } // Argumentliste und Angaben können weggelassen werden.

Parameter

Parameter Einzelheiten
Standard-Capture Gibt an, wie alle nicht aufgelisteten Variablen erfasst werden. Kann = (Erfassung nach Wert) oder & (Aufnahme nach Referenz) sein. Ohne Angabe sind nicht aufgeführte Variablen im Lambda-Body nicht erreichbar . Das Standard-Capture muss vor der Capture-Liste stehen .
Capture-Liste Gibt an, wie lokale Variablen im Lambda-Body verfügbar gemacht werden . Variablen ohne Präfix werden nach Wert erfasst. Mit & Variablen werden durch Verweis erfasst. Innerhalb einer Klassenmethode, this kann verwendet werden , um alle zugänglich ihre Mitglieder durch Bezugnahme zu machen. Auf nicht aufgelistete Variablen kann nicht zugegriffen werden, es sei denn, der Liste ist eine Standarderfassung vorangestellt.
Argumentliste Gibt die Argumente der Lambda-Funktion an.
veränderlich (optional) Normalerweise werden durch Wert erfasste Variablen const . Durch die Angabe der mutable Eigenschaft werden sie nicht konstant. Änderungen an diesen Variablen werden zwischen Aufrufen beibehalten.
Wurfspezifikation (optional) Gibt das Auslöseverhalten der Lambda-Funktion an. Zum Beispiel: noexcept oder throw(std::exception) .
Attribute (optional) Beliebige Attribute für die Lambda-Funktion. Wenn zum Beispiel der Lambda-Body immer eine Ausnahme [[noreturn]] kann [[noreturn]] verwendet werden.
-> Rückgabetyp (optional) Gibt den Rückgabetyp der Lambda-Funktion an. Erforderlich, wenn der Rückgabetyp nicht vom Compiler bestimmt werden kann.
Lambda-Körper Ein Codeblock, der die Implementierung der Lambda-Funktion enthält.

Bemerkungen

C ++ 17 (der aktuelle Entwurf) führt constexpr Lambdas ein, im Wesentlichen Lambdas, die zur Kompilierzeit ausgewertet werden können. Ein Lambda ist automatisch constexpr wenn es die Anforderungen von constexpr erfüllt. Sie können es jedoch auch mit dem Schlüsselwort constexpr angeben:

//Explicitly define this lambdas as constexpr
[]() constexpr {
    //Do stuff
}

Lambdas Verwandte Beispiele