struct Fraction
{
private:
        int numerator = 1, denominator = 1;
public:
        string opCast(T : string)() const
        {
                import std.conv : to;

                return numerator.to!string() ~ "/" ~ denominator.to!string();
        }
}

void main()
{
        import std.stdio, std.conv;

        Fraction n = Fraction(23, 11);
        writeln(n.to!string(), " ", n.opCast!string);
}



In this program, casting using to does not work as intended (returning 23/11) on the struct. However, calling opCast directly seems to do the job. Why is that?

Reply via email to