GC.malloc is pure - wat
Simen Kjaeraas via Digitalmars-d
digitalmars-d at puremagic.com
Fri Apr 1 01:28:28 PDT 2016
On Friday, 1 April 2016 at 07:58:46 UTC, ZombineDev wrote:
> On Friday, 1 April 2016 at 05:00:43 UTC, ag0aep6g wrote:
>> int[] f() pure nothrow {return [0];}
[snip]
> The last case is different. It has nothing to do with pure. It
> is about reference-type literals and default field values:
[snip]
> struct S
> {
> C c = new C;
> int[] arr = [1, 2, 3];
> }
No. Try this:
int[] bar() {
return [0];
}
void main() {
auto a = bar();
a[0] = 3;
auto b = bar();
assert(b[0] == 0);
}
That assert passes with flying colors no matter the compiler
flags.
It is true that arrays in structs' initial state are copied (and
may lead to subtle bugs), but the same is not the case for arrays
returned from functions.
--
Simen
More information about the Digitalmars-d
mailing list