How to delegate varargs
Tomas Lindquist Olsen
tomas at famolsen.dk
Tue Nov 20 15:21:21 PST 2007
Tomas Lindquist Olsen wrote:
>
> From a users point of view the only change to the D spec would be:
>
> At the end of the section "D-style Variadic Functions" append:
>
> <<<<<
> The variadic arguments can be forwarded to another D-style variadic
> function by passing '...' as an argument. The forwarded arguments are
> bit-copied onto a new argument list.
>
> void foo(...)
> {
> // do something
> }
> void bar(...)
> {
> foo(1, ..., 3.0);
> }
> >>>>>
>
> With this approach there is still no way to slice the argument list, for
> that a more high-level approach like the ones mentioned by Jarret in the
> "Variadic arguments and map" thread is probably needed.
Possibly also the section about "_argptr" should be changed to:
"These variadic functions have a special local variable declared for them, _argptr, which is a
void* pointer to the first of the variadic arguments. To access the arguments, _argptr must be
cast to a pointer to the expected argument type. There is also a special local variable,
_argptrLength, which holds the length in bytes of the variadic argument list"
This could however just be an implementation detail.
More information about the Digitalmars-d
mailing list