lambda function with "capture by value"
Simon Bürger via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 5 11:17:49 PDT 2017
If a lambda function uses a local variable, that variable is
captured using a hidden this-pointer. But this capturing is
always by reference. Example:
int i = 1;
auto dg = (){ writefln("%s", i); };
i = 2;
dg(); // prints '2'
Is there a way to make the delegate "capture by value" so that
the call prints '1'?
Note that in C++, both variants are available using
[&]() { printf("%d", i); }
and
[=]() { printf("%d", i); }
respectively.
More information about the Digitalmars-d-learn
mailing list