stack out of scope ?
H. S. Teoh
hsteoh at quickfur.ath.cx
Sun May 16 19:38:34 UTC 2021
On Sun, May 16, 2021 at 06:33:04PM +0000, Alain De Vos via Digitalmars-d-learn wrote:
> On Sunday, 16 May 2021 at 18:27:40 UTC, H. S. Teoh wrote:
[...]
> > ---------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---------
[...]
> So I put everywhere @safe ?
Or put `@safe:` at the top of the file.
> When not ?
Sometimes when you need to perform a system operation that you know is
safe, but the compiler cannot prove is safe. Or you need to call a
@system function (e.g. a C library).
T
--
Маленькие детки - маленькие бедки.
More information about the Digitalmars-d-learn
mailing list