Copy only frame pointer between objects of nested struct
Artur Skawina via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jan 6 15:32:10 PST 2015
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
More information about the Digitalmars-d-learn
mailing list