Как мне разрешить реализацию STL для моих пользовательских типов? В MSVC существует класс std::tr1::hash, который я могу частично специализировать с помощью
namespace std 
{
    namespace tr1 
    { 
        template <> 
        struct hash<MyType> 
        { ... };
    } 
}
 но это рекомендуемый способ? Кроме того, работает ли это с реализацией GCC? Для boost::hash достаточно предоставить свободную функцию size_t hash_value (const MyType&), есть ли что-то подобное для реализации TR1?