Ho la seguente funzione diCome passare un riferimento di runtime del C++ a una cattura di una lambda?
template<class Function>
void f(Function&& g) {
h(..., [&g](){g();});
}
E 'una funzione f
accettare una funzione, un lambda o un funtore come argomento. Al suo interno chiama la funzione h
a cui passo un lambda come argomento che sta chiamando g
e riceve g
tramite cattura.
- Devo passare
g
o&g
nel campo cattura del lambda? - Il funtore verrà copiato con il codice sopra riportato?
Normalmente oggetti funzione simili sono passati per valore. Copiarli dovrebbe essere estremamente economico. Se i tuoi oggetti non sono così, probabilmente stai facendo qualcosa che non è del tutto corretto. –