digitalmars.D.learn - Why can't 'scope' be inferred here?
- Paul Backus (20/20) Jun 21 2019 The following code fails to compile with -dip1000:
The following code fails to compile with -dip1000: struct Inner(T) { T value; this(ref T value) { this.value = value; } } struct Outer(T) { Inner!T inner; void opAssign(ref T rhs) { inner = Inner!T(rhs); } } safe void main() { int x; int* p = &x; Outer!(int*) o; o = p; } (Interactive: https://run.dlang.io/is/yYTReh) Changing Inner's constructor to take a `scope ref T value` fixes the error. But since Inner is a template, and the body of the constructor is available to the compiler, shouldn't it be able to infer the `scope` attribute?
Jun 21 2019