November 11, 2020 scope front vs [0] | ||||
---|---|---|---|---|
| ||||
Hello, Why does expression 'foo = bars[][0].foo' work but 'foo = bars[].front.foo' doesn't? example: class Foo{} struct Bar{ Foo foo; } void main()@safe{ import std; Foo foo; scope Bar[] bars = [Bar.init]; foo = bars[][0].foo; //OK, WHY? foo = bars[].front.foo; //Error: scope variable bars assigned to foo with longer lifetime } |
November 11, 2020 Re: scope front vs [0] | ||||
---|---|---|---|---|
| ||||
Posted in reply to vitamin | Or similar problem: class Foo{} struct Slice{ Foo[] data; this(return scope Foo[] data)@safe { this.data = data; } Slice opSlice()@safe return scope{ return Slice(data); } Foo opIndex(size_t i)@safe return scope{ return data[i]; } } void main()@safe{ Foo foo; scope Slice slice = Slice([new Foo]); foo = slice[][0]; //OK, Why? foo = slice[].opIndex(0); //Error: scope variable slice assigned to foo with longer lifetime } |
Copyright © 1999-2021 by the D Language Foundation