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

Nemanja Boric via Digitalmars-d digitalmars-d at puremagic.com
Sat Nov 5 01:27:49 PDT 2016


```
import std.variant;
import std.stdio;
import std.exception;

void main()
{
     Algebraic!(int, string) variant;

     variant = 10;
     int x = 0;
     // Functions throws - uncomment and see
     //    variant.tryVisit!( (string s) => enforce(false),
     //                       (int i)    => enforce(false))();

     // This - does nothing
     variant.visit!(    (string s) => { enforce(false); x = 2; },
                        (int i)    => { enforce(false); x = 3; 
})();
     writeln("x = ", x);

     // This works as expected
     variant.visit!(    (string s) => { x = 2; }(),
                        (int i) =>    { x = 3; }())();

     writeln("x = ", x);
}
```


More information about the Digitalmars-d mailing list