Tim M Wrote: > http://www.digitalmars.com/d/2.0/operator-overloading.html#Unary > > "The member function e.opCast() is called, and the return value of > opCast() is implicitly converted to type. Since functions cannot be > overloaded based on return value, there can be only one opCast per struct > or class." > > I've come across a situation where opcast to different types would be very > useful. Why can't this be overloaded to cast to different types as a > special situation for overloading on return types. Very useful IMHO.
That's actually very easy to sidestep, just instead of using opCast - use a method like T Foo.to!(T) or a library solution like tango.util.Convert. I do hope though that this restriction will be lifted when opImplicitCast comes along, by choosing a signature that takes the target type as parameter.
