Implicit conversion

Ali Çehreli acehreli at yahoo.com
Wed Jan 17 23:32:01 UTC 2018


On 01/17/2018 03:15 PM, Jiyan wrote:
 > Hello,
 >
 > I want to convert from ints implicit to a struct type, so for example:
 >
 > struct use
 > {
 >      int x;
 >
 >      int toInt()
 >      {
 >          return x;
 >      }
 >
 >      use fromInt(int v)
 >      {
 >          return use(v);
 >      }
 >
 >          alias toInt this; // implicit conversion to int value
 >
 >      this(int v)
 >      {x = v;}
 > }
 >
 > void useP(int v)
 > {
 >      v.writeln;
 > }
 >
 > void useV(use v)
 > {
 >      v.writeln;
 > }
 >
 > void main(string[] args)
 > {
 >      use a = use(2);
 >      //useP(a);
 >      useV(2); // how can i let this work?
 > }
 >
 > Thanks :)
 >

Not possible in D by design.

std.conv.to is smart to use the int-taking constructor, which I think is 
useful in templated code in some cases:

     import std.conv : to;
     useV(2.to!use);

Ali



More information about the Digitalmars-d-learn mailing list