override bool opEquals(Object o) const {
if (o is null) {
return false;
}
writeln(o); // write: cast.Vector2D!(float).Vector2D
Vector2D!(T) vec = cast(Vector2D!(T)) o;
writeln(vec); // write: null
// ...
It seems the cast fail, but the question is: why?