std::function<void()> create_function (args...)
{
int x = initial_value (args...);
return [x] () mutable
{
std::cout << x++ << std::endl;
};
}
I discovered I need the mutable keyword on the lambda otherwise x is const.
If I call create_function multiple times, will the returned function objects each have their own copy of x or is it shared?
To clarify, If I wanted this kind of functionality pre-C++11, I would have to write a class to encapsulate the capture, in which case I would have a choice of making x a member variable or global/static. If x is const it wouldn't matter. How does the language specify the storage of x with respect to different instances of the lambda?
Aucun commentaire:
Enregistrer un commentaire