Indexing an associative array with a list of types
Doctor J
nobody at nowhere.com
Sat Apr 11 15:13:54 PDT 2009
grauzone Wrote:
> Just curious, how did you do this function template thing?
static int typesToInt(T1, T2) ()
{
static if (is (T1 == int) && is (T2 == float))
return 1;
else if (is (T1 == long) && is (T2 == double))
return 2;
else
static assert (false, "Unrecognized types.");
}
Yuck. :)
> Types are a compiletime only thing. To get a "runtime" handle for a
> type, use TypeInfo. For each type, there exists exactly one TypeInfo
> object instance. You can get this object with typeid():
>
> TypeInfo ti = typeid(int);
>
> Your example above could actually be implemented like this:
>
> int[TypeInfo[]] typemap;
>
> typemap[[typeid(int), typeid(float)]] = 1;
>
> (Two [] bracket pairs because one is for indexing into the AA, and one
> is an array delegate for constructing the TypeInfo[] array, which is
> used as key.)
Sweet! Exactly what I was looking for. Thanks.
-John
More information about the Digitalmars-d-learn
mailing list