On Mon, 14 Dec 2009 21:06:20 +0300, dsimcha <[email protected]> wrote:
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);
I agree it hurts a lot. I faced the same problem implementing RefCounted:
you can't return RefCounted object from one function and pass it by
reference to another one. Passing it by value is not a good option.