+struct HasLoadType
+{
+ struct Yes { char c[2]; };
+ struct No { char c; };
+
+ template<typename U>
+ static Yes f(typename U::LoadType *);
+ template<typename U>
+ static No f(...);
+
+ enum { value = (sizeof(f<T>(0))==sizeof(Yes)) };
+};
+
+template<typename T, bool lt = HasLoadType<T>::value>
+struct TypeInfo;
+
+template<>
+struct TypeInfo<short int, false>: IntType { };