On Saturday, 8 June 2013 at 16:21:26 UTC, deadalnix wrote:
On Saturday, 8 June 2013 at 16:13:28 UTC, monarch_dodra wrote:
On Saturday, 8 June 2013 at 15:56:47 UTC, deadalnix wrote:
Sound like a nice idiom. Why is the first set of () needed ?
Can we change the grammar to remove them ?
It's because you are actually declaring a lambda that takes no
arguments, and has no name, and contains a body. BTW, you
quoted my incomplete code, the correct code I wanted to post
was:
() nothrow {//anonymous lambade declaration
//Body of the lambde
}() //actual call to lambda
I'd want to be able to do this, without either the first or
last set of (). The required change of grammar would mean
there'd be no lambda at all afterwards.
{} is a lambda already. The first set of () is optional.
Actually, the first set of `()` is required because of the
`nothrow`. You can't write:
nothrow {
//body
}();
because the `nothrow` in lambdas needs to be placed after the
argument list - so you need an argument list.