Function pointers/delegates default args were stealth removed?
Maxim Fomin
maxim at maxim-fomin.ru
Mon Aug 27 13:50:53 PDT 2012
I think that D should be consistent with rules of types
derivation, in particular the pointer one. Two pointer types
should be same if and only if types they pointer are the same.
Breaking this rule would result in language complexity.
In case when default arguments are part of the type, default
arguments must be written in declaration of a function pointer,
moreover function pointers with different default arguments would
be different types. So, besides of getting convenient usage of a
shorter function call a user would have carry a particular
default value with every declaration/definition he writes. Also
similar functions pointers with different default arguments would
not be interchangeable because they are different types. I think
that such constraints would make the proposal a net loss to D
contribution.
Also, making default arguments a part of a definition would break
C/C++ legacy rules which claim that a function is characterized
by its return value and number, order and types of its
parameters. Although, it not necessarily mean that this rule
cannot be broken, but it at least requires strong reasons,
however as it is discussed, the proposal would result in a
unclear usage, increased language complexity, subtle bugs and
implementation issues.
More information about the Digitalmars-d
mailing list