On Friday, 20 April 2018 at 22:21:13 UTC, Jonathan M Davis wrote:
Honestly, I think that it's a terrible idea to special-case it
like that. If we want to argue for making it work in the
language, that's fine, but if we special-case it like this,
then it will work with some functions that have lazy parameters
and not others, and the result will be confusing. Besides, all
it takes to be able to pass a lamdba or delegate to a lazy
parameter is to actually call it when passing it. So, if you
add parens after the braces, it works. There's no need to go
and add a special case for it to the function.
Again lack of experience, so I presume you can just do:
bool inserted = false;
auto p = aa.getOrAdd("key", {inserted = true; return new Person;
}());
I hadn't realised that until now. I enjoy your brutal honesty by
the way ;)