Objective-D, reflective programming, dynamic typing
Christopher Wright
dhasenan at gmail.com
Sat Apr 4 21:34:56 PDT 2009
Andrei Alexandrescu wrote:
> Christopher Wright wrote:
>> Andrei Alexandrescu wrote:
>>> void foo_templated(T...)(T args)
>>> {
>>> Variant[args.length] dynatyped;
>>> foreach (i, arg; args) dynatyped[i] = arg;
>>> return foo(dynatyped);
>>> }
>>> void foo(Variant[] dynatyped...)
>>> {
>>> ...
>>> }
>>>
>>> Andrei
>>
>> Okay, that's a reasonable solution, except that it doesn't work with
>> interfaces. I already submitted a bugzilla entry that you should be
>> able to create a Variant[] from D varargs, but that still requires
>> writing a wrapper function.
>
> A Variant[] is difficult to create from TypeInfo[] + void* varargs
> because vital information has already been lost. That's why I'm saying
> we better fix the situation by e.g. implementing opImplicitCast. Please,
> let's leave void* alone.
>
> Andrei
I don't find that this is the case. I implemented a Variant type that
can be created from a void* and a typeinfo -- I had to, since tango's
Variant doesn't support this (and, incidentally, because there is no way
to get a representation of the data inside a tango Variant).
What information did you find that you needed but is not available in
TypeInfo?
More information about the Digitalmars-d
mailing list