Andrei Alexandrescu wrote:
grauzone wrote:
How do I make this work with, say, interface functions?

But I already know your reply.

I don't know it. What is it?

See your reply to Jarett. Granted, being able to have final methods in interfaces would improve the situation. But in general, there's no reason to abandon varargs, if only they weren't implemented in such a sucky way.

Anyway, I'll add my own proposal for improving varargs, although it's a waste of time:

1.) For _argptr, replace the void* by a void*[], that is indexed by the argument number. Currently, _argptr is a raw pointer to the stack, and getting a pointer to an individual argument on all platforms/compilers is non-trivial.

2.) Allow a way to chain function calls with varargs. Currently, if you have _argptr and _arguments, you can't pass them to another variadic function. Basically, you would have to allow passing _argptr and _arguments instead of real arguments to a function with ... in its signature.

When you combine both feature requests, it would be trivial to build vararg calls at runtime. You'd simple stuff the TypeInfo and the pointer to your data into _argptr and _arguments, and call a variadic function with it.

But if you don't intend to change anything about varargs, please let Walter kill this abortion. Fighting with the trivial, unnecessary restrictions of the current implementation is really annoying.

Andrei

Reply via email to