On Wednesday, 20 August 2014 at 14:52:59 UTC, ketmar via Digitalmars-d wrote:
On Wed, 20 Aug 2014 14:44:40 +0000
Peter Alexander via Digitalmars-d <digitalmars-d@puremagic.com> wrote:

Well, the return type is already the common type of all return paths
no, it's not. the return type will be taken from the first return
statement in code.

auto foo() {
  if (1) return 1;
  return 2.0;
}

This returns double. Try for yourself.

That doesn't help at all. I want return by ref when possible, not always return by value. If I wanted return by value, I'd just return by value!!
you can't return ref and non-ref simultaneously from one function.

Of course, what I want is:

1. If both returns are lvalues, return by ref.
2. Otherwise, return by rvalue (regardless if one is an lvalue).

Reply via email to