On Friday, 12 May 2023 at 15:00:48 UTC, Salih Dincer wrote:

```d
struct Fraction {
        int num, den;

        this(int n, int d)
        {
                num = n;
                den = d;
        }

        // Cast Expression : convert float value of fraction
        auto opCast(T : float)() const
        {
                return cast(float)(num) / cast(float)(den);
        }
}
```

If you want auto-conversion, you should be more explicit:
```d
float opCast() { }
```
because if you return "auto" it is not the highest-prio fit and therefore not chosen. If you have multiple choices, you still don't need to use "auto". Instead you can return T:
```d
T opCast(T)() if(isFloatingPoint!T)
{
   return cast(T)num / cast(T)den; // float, double or real
}
```
Kind of ironic, but especially "auto" does NOT fit automatically :-)

Reply via email to