42 votes

Comment comprendre deux paires de parenthèses dans ce fragment de code?

Ce code provient de l' amorce C ++ p.446:

 return hash<string>() (sd.isbn());
 

Je ne comprends pas l'expression de retour avec deux paires de parenthèses. Il n'y a pas de syntaxe similaire devant le livre.

52voto

NathanOliver Points 10062

std::hash est un type de classe. Ce que vous faites ici est de construire un temporaire std::hash avec hash<string>() puis (sd.isbn()) des appels à l' operator() de temporaire de le transmettre sd.isbn().

Il serait le même que

std::hash<std::string> temp;
return temp(sd.isbn());

Pour en savoir plus sur l'utilisation des objets qui ont un operator() voir: C++ Foncteurs et leurs utilisations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X