Behebung von GCC-Fehler 'the lambda has no capture-default'

English Deutsch

Bei einem GCC-Fehler wie diesem:

gcc_lambda_error.txt
error: the lambda has no capture-default

ist die Behebung meist recht einfach. Suche nach einer Lambda-Funktion, die eine Variable wie folgt einfängt:

lambda_capture_example.cpp
[&myVar] (/* ... */) {/* ... */}

&myVar bedeutet „myVar per Referenz einfangen“.

In den meisten Fällen kannst du einfach alle lokalen Variablen mit einer Capture-Default einfangen:

lambda_capture_all_example.cpp
[&] (/* ... */) {/* ... */}

In seltenen Fällen hat dies unbeabsichtigte Nebeneffekte, da du nun alle Variablen per Referenz einfängst, obwohl du einige per Kopie einfangen möchtest — prüfe also deinen Code sorgfältig.

Beachte, dass dieser Fehler von der GCC-Version abhängt. Bei mir hat die Verwendung von GCC 7.2 den Fehler behoben.


Check out similar posts by category: C/C++, GCC Errors