On Thursday, 26 May 2016 at 10:51:30 UTC, John Nixon wrote:
On Wednesday, 25 May 2016 at 15:44:34 UTC, Marc Schütz wrote:
On Tuesday, 24 May 2016 at 20:58:11 UTC, John Nixon wrote:
On Tuesday, 24 May 2016 at 15:17:37 UTC, Adam D. Ruppe wrote:
On Tuesday, 24 May 2016 at 14:29:53 UTC, John Nixon wrote:
Or add an explicit constructor:
struct CS {
// ...
this(const CS rhs) { this = rhs; }
Unfortunately this results in "Error: cannot implicitly convert
expression (rhs) of type const(CS) to CS'.
Hmm... this is the full program that works for me:
import std.stdio;
struct CS {
char[] t;
this(const CS rhs) {
this = rhs;
}
CS opAssign(const CS rhs) {
writeln("CS.opAssign called");
this.t = rhs.t.dup;
return this;
}
};
void test_fun(const ref CS rhs) {
auto cs = CS(rhs);
writeln("cs = ",cs);
}
void main() {
CS rhs;
rhs.t = "string".dup;
test_fun(rhs);
return;
}