dimanche 19 avril 2015

Can a C++ lambda constructor argument capture the constructed variable?

The following compiles. But is there ever any sort of dangling reference issue?



class Foo {
Foo(std::function<void(int)> fn) { /* etc */ }
}

void f(int i, Foo& foo) { /* stuff with i and foo */ }

Foo foo([&foo](int i){f(i, foo);});


Seems to work. (The real lambda is of course more complicated.)


Aucun commentaire:

Enregistrer un commentaire