update type.hpp, support std::tr1::unordered_map and std::tr1::unordered_set