es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no está especializado std::hash en std?

¿Por qué no está especializado en std el std::hash? Esto causa errores de compilación como el siguiente:

std::unordered_map m;
m.insert(std::make_pair("Foo", 1)); //error
m["Bar"] = 2; // también es un error

¿Hay alguna razón para esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunas posibles razones por las que std::hash<const std::string=""> podría no estar especializado en la biblioteca estándar.

    En primer lugar, los algoritmos de hash pueden variar según el caso de uso y los requisitos, por lo que tener una única especialización podría no ser suficiente para todas las situaciones. Por lo tanto, dejar que el usuario proporcione su propia función de hash podría darles una mayor flexibilidad para elegir un algoritmo adecuado.

    Además, la biblioteca estándar ya proporciona una especialización para std::hash<std::string>, y puede que no sea necesario duplicarla para const std::string. Los usuarios pueden convertir fácilmente una const std::string en una std::string si necesitan utilizar la especialización proporcionada.

    Por último, es posible que simplemente no se haya tomado la decisión de proporcionar una especialización para std::hash<const std::string=""> aún. La biblioteca estándar de C++ evoluciona con el tiempo, y las versiones futuras podrían incluir esta especialización si se considera necesaria.

Comments are closed.