On Monday, 12 February 2018 at 02:05:16 UTC, aliak wrote: > struct B(T) { > T t; > } > > struct A(T) { > T t; > auto opCast(U)() { > return B!U(cast(U)t); > } > } > > void main() { > auto a = A!int(3); > auto b = cast(float)a; // error > } Having the result of "cast(float) a" not be a float would be evil.