On Wednesday, 27 November 2013 at 10:16:13 UTC, Jonathan M Davis wrote:
On Wednesday, November 27, 2013 10:57:42 Joseph Rushton Wakeling wrote:
On 27/11/13 10:45, bearophile wrote:
> It's useless code, you can't have ref variadic, sorry.

Ack. :-(  I just tried it out myself and found the same thing.

Personally, I think that it's by far the best approach to just do

     int foo(int i)
     {
         int j;
         return foo(i, j);
     }

It's clean, and I really don't see a big problem with it. But if you _really_ don't want to do that, you can always create a dummy variable and do something
like

int dummy;

int foo(int i, out int j = dummy)
{
    ...
}

But I'd advise against it, since it strikes me as rather messy, and I really don't see any problem with just creating a wrapper function. It's the kind of thing that you already have to pretty much any time that you try and have a function accept const ref for an efficiency boost, since ref doesn't accept
rvalues. A bit annoying perhaps, but not a big deal.

- Jonathan M Davis

Interesting trick. That said, doing this (should) also mean you can't use foo in a pure context, since it means the caller needs to access the global dummy (although that seems to work right now).

Reply via email to