Just to be sure it does not got los: You know that you can avoid the temp/copy if you add one method to your struct, yes?

----
import std.stdio;

struct Big {
    string name;
    float[1000] values;

    this(string name) {
        this.name = name;
    }

    @disable
    this(this);

    ref auto byRef() inout {
        return this;
    }
}

void foo(ref const Big b) {
    writeln(b.name);
}

void main() {
    Big b = Big("#1");
    foo(b);
    foo(Big("#2").byRef);
}
----

That works like a charm and avoids any need for rvalue references. Just add it as mixin template in Phobos or something like that.

Reply via email to