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;
}

Reply via email to