Como estender std :: tr1 :: hash para tipos personalizados?

Como permito que a implementação do STL pegue meus tipos personalizados? No MSVC, existe uma classestd::tr1::hash, que posso me especializar parcialmente usando

namespace std 
{
    namespace tr1 
    { 
        template <> 
        struct hash<MyType> 
        { ... };
    } 
}

mas essa é a maneira recomendada? Além disso, isso funciona com a implementação do GCC também? Paraboost::hash, basta fornecer uma função gratuitasize_t hash_value (const MyType&), existe algo semelhante para a implementação do TR

questionAnswers(4)

yourAnswerToTheQuestion