static opCall not working?

TC via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jul 19 03:26:01 PDT 2015


I tested the code from: http://dlang.org/struct.html
Section: Dynamic Initialization of Structs


struct S
{
     int a;

     static S opCall(int v)
     {
         S s;
         s.a = v;
         return s;
     }

     static S opCall(S v)
     {
         S s;
         s.a = v.a + 1;
         return s;
     }
}

S s = 3; // sets s.a to 3
S t = s; // sets t.a to 3, S.opCall(s) is not called

which does not compile (Error: cannot implicitly convert 
expression (3) of type int to S).

What is wrong here? Docs or behavior? Tested it on asm.dlang.org 
where it fails with all compiler versions.


More information about the Digitalmars-d-learn mailing list