Sie können keinen auto
Parameter haben. Sie haben grundsätzlich zwei Möglichkeiten:
Option 1: Verwenden std::function
Sie wie gezeigt.
Option 2: Verwenden Sie einen Vorlagenparameter:
template<typename F>
void f(F &lambda) { }
Option 2 kann in einigen Fällen effizienter sein, da sie eine mögliche Heap-Zuordnung für das eingebettete Lambda-Funktionsobjekt vermeiden kann, ist jedoch nur möglich, wenn f
sie als Vorlagenfunktion in einen Header eingefügt werden kann. Dies kann auch die Kompilierungszeiten und den I-Cache-Footprint erhöhen, ebenso wie jede Vorlage. Beachten Sie, dass dies möglicherweise auch keine Auswirkung hat. Wenn das Lambda-Funktionsobjekt klein genug ist, kann es im std::function
Objekt inline dargestellt werden.
const&
?