Objective-D, reflective programming, dynamic typing

Tomas Lindquist Olsen tomas.l.olsen at gmail.com
Fri Apr 3 08:53:28 PDT 2009


On Fri, Apr 3, 2009 at 5:20 PM, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> Jarrett Billingsley wrote:
>>
>> On Fri, Apr 3, 2009 at 10:38 AM, Eljay <eljay at adobe.com> wrote:
>>
>>> Alas, I'm not sure how to pass the variadic arguments through to another
>>> variadic function, with this
>>> signature:
>>> void perform(...)
>>
>> You can't.  D's varargs suck.
>
> Of course you can. Where did that come from?
>
> void foo(T...)(T args) { bar(args); }
> void bar(T...)(T args) {  foreach (a; args) writeln(a); }
>
> void main()
> {
>    foo(3, 4.5);
> }
>
> prints:
>
> 3
> 4.5
>
>
> Andrei
>

That's not a D vararg, it's a variadic template!

I've made proposals to allow this properly (without templates) before
so I'm not going to waste time on that again...

It's a silly limitation IMHO.



More information about the Digitalmars-d mailing list