On 01/06/15 23:14, Peter Alexander via Digitalmars-d-learn wrote: > auto foo(T)(T a) { > T b; // Error: cannot access frame pointer of main.X > b.data[] = 1; > return b; > } > > void main() { > struct X { > this(int) {} > int[4096] data; > } > foo(X()); > } > > Note the error is because you cannot construct the main.X object without a > frame pointer. > > You could do `T b = a` here to get a's frame pointer, but it would also copy > all of a's data, which is expensive and unnecessary. > > Is there a way to only copy a's frame pointer into b?
The obvious hack would be T b = void; b.tupleof[$-1] = a.tupleof[$-1]; but you probably don't want to do it like that... > (Note: this is just an illustrative example, real problem here: > https://issues.dlang.org/show_bug.cgi?id=13935) That shows a static struct, so I'm not sure it's the same problem. artur