digitalmars.D.learn - 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
}
Nov 11 2020
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
}
Nov 11 2020








vitamin <vit vit.vit>