The Xc++ language allows for reflecting a given type using $type.
For example the following declaration appears in the ceda-core header UTRoot.h:
$type+ xvector<pref<IObject> >;
A declaration $type T allows for the following to work for T
const TypeOps& GetTypeOps<T>()
ReflectionByteCode GetReflectionByteCode<T>();
const TypeOps* FindTypeOps(ReflectionByteCode rbc);
This is needed to allow an xmap<K,V> to work for types K and V.