digitalmars.D - Limit Scope Restriction? with dmd -dip25 -dip1000
safe: class Foo { safe: ubyte[] bytes() { return new ubyte[1]; } } ubyte[] getBytes() { scope foo = new Foo(); return foo.bytes(); // Error: scope variable foo assigned to non-scope parameter this calling Foo.bytes } void main() { auto v = getBytes(); }
Apr 03 2021
On Saturday, 3 April 2021 at 15:32:38 UTC, apz28 wrote:return foo.bytes(); // Error: scope variable foo assigned to non-scope parameter this calling Foo.bytesAdd the `scope` storage class to your `bytes()` function to tell the compiler that the function won't escape any references to class members. ```D ubyte[] bytes() scope { return new ubyte[1]; } ``` If you want the compiler to infer this, make it return `auto` or make it a template function.
Apr 03 2021