function default arguments depending on other arguments

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun Jul 20 09:29:08 PDT 2014


On 7/20/14, 2:22 AM, Tove wrote:
> On Friday, 18 July 2014 at 17:40:23 UTC, Timon Gehr wrote:
>> On 07/18/2014 12:00 AM, Trass3r wrote:
>>> void foo(int a, int b = a)
>>> {
>>> }
>>> is illegal in C++ because order of evaluation is undefined.
>>>
>>> But since D defines the order to be left to right couldn't it also allow
>>> this?
>>
>> It could, and I think it is an unnecessary limitation that it
>> currently does not. (This can also be useful if that parameter is the
>> hidden 'this' reference.)
>
> This request keeps popping up, I've seen it at least 3 times before and
> there's even an enhancement request for it:
> https://issues.dlang.org/show_bug.cgi?id=8075
>
> IIRC:
> Walter's stance was that he needs compelling examples, which proves the
> utility of this new feature.

The classic example is injecting alloca downstream:

auto fun(size_t s, void[] buffer = alloca(s)[0 .. s])
{
   ...
}


Andrei



More information about the Digitalmars-d mailing list