c++ - programacion - que hacen las llaves en java
¿Cómo entender dos pares de paréntesis en este fragmento de código? (1)
Este código es de C ++ primer p.446:
return hash<string>() (sd.isbn());
No entiendo la expresión de retorno con dos pares de paréntesis. No hay una sintaxis similar en frente del libro.
std::hash
es un tipo de clase. Lo que está haciendo aquí es construir un std::hash
temporal con hash<string>()
y luego (sd.isbn())
llama al operator()
de ese temporal que lo pasa sd.isbn()
.
Sería lo mismo que
std::hash<std::string> temp;
return temp(sd.isbn());
Para obtener más información sobre el uso de objetos que tienen un operator()
consulte: C ++ Functors - y sus usos