const ref rvalues

dsimcha dsimcha at yahoo.com
Mon Dec 14 10:06:20 PST 2009


I mentioned this deep in another thread, but I think it deserves its own
thread.  Can we get something like:

void doStuff(T)(const ref T val) {
    // do stuff.
}

T getVal() {
    return someValue;
}

void main() {
    doStuff(getVal());  // Doesn't currently work.
}

For non-const ref parameters, it's understandable that passing rvalues in
doesn't work because this is likely a bug that the compiler should catch.
However, for const ref parameters, can't the compiler just implicitly put the
value on the caller's stack frame and convert it to an lvalue rather than
forcing the programmer to write the boilerplate to do this manually?  This
would result in:

doStuff(getVal()); -->

auto __temp = getVal();
doStuff(__temp);



More information about the Digitalmars-d mailing list