Why doesn't std.variant.visit automatically call the provided delegates?

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Tue Nov 8 08:53:52 PST 2016


On 11/8/16 11:31 AM, Nick Sabalausky wrote:
> On 11/05/2016 04:22 PM, Adam D. Ruppe wrote:
>> On Saturday, 5 November 2016 at 20:15:14 UTC, Kapps wrote:
>>> That feels like it should be a compiler warning.
>>
>> I'm now of the opinion that the {} delegates should be deprecated
>> (instead use () {} delegates)... this comes up a lot and there's a few
>> other places too where it is a pain... and it isn't that worth keeping
>> imo.
>
> I didn't even know you could create a delegate with just {} and no
> parens. Kinda confusing since, normally, {} by itself creates a scope,
> not a delegate.

Indeed:

           {int x = foo; return x;} // scope

auto dg = {int x = foo; return x;} // delegate

The requirements seem to be that you have to use the {} syntax as an 
expression instead of a block.

omitting the initial parentheses seems like a really low benefit to 
having such confusing ambiguity. And of course, it leads to the horrible 
examples shown by OP.

-Steve


More information about the Digitalmars-d mailing list