cast() is supposed to remove all attributes from a type, but in the case of arrays, it does nothing to the tail. I think cast() should remove even the tail. Note that arrays *already* implicitly cast to their tail versions. i.e.: const(T[]) implicitly casts to const(T)[] immutable(T[]) implicitily casts to immutable(T)[] so to have: cast()const(T[]) result in const(T)[] serves no purpose, I need no cast there. The same goes for pointers, and if they are ever implemented, tail-const object references.
The spec (now) says: > Casting with no type or qualifiers removes any top level const, immutable, shared or inout type modifiers from the type of the UnaryExpression https://dlang.org/spec/expression.html#cast_qualifier Note 'top level'. So I think this is invalid.
I have no idea what I was thinking those 13 years ago. OK to close ;)