Unnamed parameter with default value
Maxim Fomin via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 17 10:28:21 PDT 2014
On Tuesday, 17 June 2014 at 15:15:44 UTC, Luís Marques wrote:
> Is there any particular reason why this is accepted? (I
> introduced it by mistake):
>
> void foo(int = 3) {}
>
> I guess it could be useful to ensure binary compatibility when
> you expect to add the parameter later?
Actually there is nothing strange because current implementation
technically does not remove variable names, it generates implicit
ones. This compiles:
void foo(int = 0)
{
_param_0 = 1;
}
and is equivalent to
void foo(int _param_0 = 0)
{
_param_0 = 1;
}
It is not a wise design decision which is aimed to support some
case, it is just technical consequence of implementation.
And I don't think that it has anything to do with binary
compatibility, because both parameter names and default arguments
exists only in compile time.
More information about the Digitalmars-d
mailing list