Implicit type conversion depending on assignment

bachmeier no at spam.net
Fri Mar 24 13:53:02 UTC 2023


On Thursday, 23 March 2023 at 13:38:51 UTC, Alexander Zhirov 
wrote:
> Is it possible to convert such records inside the structure to 
> the assigned type?
>
> ```d
> struct MyVal
> {
>     string value;
>     // Here it would be possible to use an alias to this, but 
> it can only be used 1 time
> }
>
> auto a = MyVal("100");
> auto b = MyVal("11.2");
>
> int MyInt = a;        // Implicitly convert to target type
> float myFloat = b;    // Implicitly convert to target type
> ```

You're limited by the use of int and float. It works just fine 
for structs:

```
struct MyInt {
     int x;
     alias x this;

     this(MyString s) {
         x = s.to!int;
     }

     void opAssign(MyString s) {
         x = s.to!int;
     }
}

struct MyFloat {
     float x;
     alias x this;

     this(MyString s) {
         x = s.to!float;
     }

     void opAssign(MyString s) {
         x = s.to!float;
     }
}

struct MyString {
     string s;
     alias s this;
}

void main() {
     auto ms = MyString("100");
     auto ms2 = MyString("11.2");
     MyInt mi = ms;
     MyFloat mf = ms2;
}
```


More information about the Digitalmars-d-learn mailing list