Objective-D, reflective programming, dynamic typing

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Apr 5 09:07:18 PDT 2009


Christopher Wright wrote:
> Andrei Alexandrescu wrote:
>> Christopher Wright wrote:
>>> What information did you find that you needed but is not available in 
>>> TypeInfo?
>>
>> To have constant-type dispatching without limitations you need the 
>> static type information.
> 
> What do you mean by this? At first I thought you meant that TypeInfo 
> does not contain sufficient information to determine whether something 
> is const or immutable, but that is not the case. If you wish to convert 
> a Variant of a mutable thing to a const version of it, then you can 
> check whether the type you get is convertible, and without any trouble 
> -- the template instantiation to get the appropriate type will provide 
> the TypeInfo you need.
> 
> So what's the issue?

You may want to peruse the std.variant implementation. Variant is a 
struct containing a buffer for the data and a pointer to function. The 
function is a dispatcher for a handful of primitive operations.

The pointer to function is assigned from the address of a function 
template. To get that address, you need the static type. That's the 
necessity.

It's a very fast and very flexible design, but it does need the static 
type during initialization.


Andrei



More information about the Digitalmars-d mailing list