Re: Upcasting slice of class elements

2018-01-05 Thread Steven Schveighoffer via Digitalmars-d-learn
On 1/5/18 6:04 PM, H. S. Teoh wrote: On Fri, Jan 05, 2018 at 10:16:04PM +, Nordlöw via Digitalmars-d-learn wrote: Why isn't class X {} class Y : X {} X[] xs = cast(X[])(Y[].init); compilable in safe D? What's unsafe about such a cast? Your original code snippet seems redu

Re: Upcasting slice of class elements

2018-01-05 Thread H. S. Teoh via Digitalmars-d-learn
On Fri, Jan 05, 2018 at 10:16:04PM +, Nordlöw via Digitalmars-d-learn wrote: > Why isn't > > class X {} > class Y : X {} > X[] xs = cast(X[])(Y[].init); > > compilable in safe D? > > What's unsafe about such a cast? Your original code snippet seems redundant. If you wanted an em

Re: Upcasting slice of class elements

2018-01-05 Thread Steven Schveighoffer via Digitalmars-d-learn
On 1/5/18 5:16 PM, Nordlöw wrote: Why isn't     class X {}     class Y : X {}     X[] xs = cast(X[])(Y[].init); compilable in safe D? Hm... given that there is no other reference to xs, it should work. But obviously you have a different example in mind, as this makes no sense? This work

Re: Upcasting slice of class elements

2018-01-05 Thread Adam D. Ruppe via Digitalmars-d-learn
On Friday, 5 January 2018 at 22:16:04 UTC, Nordlöw wrote: Why isn't class X {} class Y : X {} X[] xs = cast(X[])(Y[].init); compilable in safe D? What's unsafe about such a cast? class X {} class Y : X {} class Z : X {} Y[] ys = Y[].init; X[] xs = cast(X[])(ys); xs[0] = new Z;

Upcasting slice of class elements

2018-01-05 Thread Nordlöw via Digitalmars-d-learn
Why isn't class X {} class Y : X {} X[] xs = cast(X[])(Y[].init); compilable in safe D? What's unsafe about such a cast?