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?