type mapping by templates

You can achieve this through specialization :

template<class T>
struct TypeToObjectType;

template<>
struct TypeToObjectType<double> {
    typedef Double type;
};

Note that you have to provide a specialization for each of the types on which you want TypeToObjectType to work. Macros can be helpful here :

#define SPECIALIZE_TYPETOOBJECTTYPE(ObjectType) \
    template<> struct TypeToObjectType<ObjectType::basic_type> { \
        typedef ObjectType type; \
    };

SPECIALIZE_TYPETOOBJECTTYPE(Int)
SPECIALIZE_TYPETOOBJECTTYPE(Double)

Sounds like you are looking for something like this:

template<typename T>
struct TypeToObjectType;

// specialization for T=double    
template<>
struct TypeToObjectType<double> {
   typedef Double type;
};

Here TypeToObjectType<double>::type is Double and you can add other specializations for additional mappings.