¿Cómo extender std :: tr1 :: hash para tipos personalizados?

¿Cómo permito que la implementación de STL recoja mis tipos personalizados? En MSVC, hay una clasestd::tr1::hash, que puedo especializar parcialmente usando

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

pero ¿es esta la forma recomendada? Además, ¿funciona esto también con la implementación de GCC? Porboost::hash, es suficiente para proporcionar una función gratuitasize_t hash_value (const MyType&), ¿hay algo similar para la implementación de TR1?

Respuestas a la pregunta(4)

Su respuesta a la pregunta