Function pointers/delegates default args were stealth removed?
Carl Sturtivant
sturtivant at gmail.com
Mon Aug 27 02:57:45 PDT 2012
> Suppose a function pointer can be called with fewer actual
> arguments than the number of parameters in its declaration.
> Suppose that when such a call is made, the missing arguments
> will always be assigned the default initialization for their
> types (default default-arguments!). Now suppose that a language
> mechanism is provided so that code in the function body can
> determine how many actual arguments were supplied at the point
> of call.
>
> Now any function pointer can simulate other default arguments
> (non-default default arguments) by testing the actual number of
> arguments supplied and assigning defaults overtly to the
> remainder inside the function body. No need for new types: this
> is a run-time action.
That's a great idea Carl! You mean something like this:
int sum(int a, int b) {
if( argc == 1 ) b = 1; //default for b if not supplied
return a + b;
}
//...
auto f = ∑
//...
auto x = sum(y); //function pointer call, so fewer args permitted
More information about the Digitalmars-d
mailing list