On Thursday, 26 April 2012 at 03:44:27 UTC, Walter Bright wrote:
A subtle but nasty problem - are default arguments part of the
type, or part of the declaration?
See http://d.puremagic.com/issues/show_bug.cgi?id=3866
Currently, they are both, which leads to the nasty behavior in
the bug report.
The problem centers around name mangling. If two types mangle
the same, then they are the same type. But default arguments
are not part of the mangled string. Hence the schizophrenic
behavior.
But if we make default arguments solely a part of the function
declaration, then function pointers (and delegates) cannot have
default arguments. (And maybe this isn't a bad thing?)
I don't think it's a bad thing: default arguments in the type
system mean values in the type system.
NMS