Paul D. Anderson: > My struct has a dynamic array as a member -- that seems to be the problem. > This code doesn't compile: > > struct S { > int x; > int[] a; > } > > S foo(const S b) { > S other = b; > return other; > } > void main() {}
This compiles, oh joy: struct S { int x; int[] a; } S foo(const S b) { S other; other.x = b.x; other.a = b.a.dup; // the dup is necessary here return other; } void main() {} The idea now is to find a way to encapsulate that manual copying & dupping into some overloaded operator of S. But I have failed so far. Operator overloading in D2 is not an easy thing, it needs training. (That's why I have recently asked for the compiler to be strict to avoid wrong usages of the operator overloading.) Bye, bearophile