On Thursday, 28 March 2024 at 01:53:52 UTC, Steven Schveighoffer wrote:
```d
class Base {}
class Derived : Base {}

@safe pure nothrow unittest {
        Base b;
        Derived d;
        b = d; // pass

        Base[] bs;
        Derived[] ds;
        bs ~= ds; // pass
        bs = ds; // fail [1], should pass
        bs = cast(Base[])ds; // fail [2], should pass
}
```

Yes, it's unsafe, as you can replace an element of `ds` with something that has no relation to `Derived`.

This is a suggested change that when _applied_ will make the code unsafe yes. But the code in its current form is safe and the compiler could be extended to prove it.

Reply via email to