On Sunday, 16 May 2021 at 18:27:40 UTC, H. S. Teoh wrote:
On Sun, May 16, 2021 at 05:24:40PM +0000, Alain De Vos via
Digitalmars-d-learn wrote:
On Sunday, 16 May 2021 at 16:58:15 UTC, H. S. Teoh wrote:
> On Sun, May 16, 2021 at 04:40:53PM +0000, Alain De Vos via
> Digitalmars-d-learn wrote:
> > This works also,
> >
> > ```
> > import std.stdio:writeln;
> >
> > int [] fun(){
> > int[3]s=[1,2,3];
> > int[] r=s;
> > return r;
> > }
> >
> > void main(){
> > writeln(fun()[0]);
> > }
> > ```
>
> https://issues.dlang.org/show_bug.cgi?id=15932
>
> Though I believe if you compile with -dip25 -dip1000 the
> compiler should emit an error for the above code. If not,
> please file a bug against -dip1000.
[...]
I use ldc2. No dip flags here.
---------snip---------
import std.stdio:writeln;
int [] fun() @safe { // N.B.: need @safe
int[3]s=[1,2,3];
int[] r=s;
return r;
}
void main() @safe { // N.B.: need @safe
writeln(fun()[0]);
}
---------snip---------
LDC output:
---------snip---------
$ ldc2 -dip1000 /tmp/test.d
/tmp/test.d(6): Error: scope variable `r` may not be returned
---------snip---------
T
So I put everywhere @safe ?
When not ?