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



html5 spec (1)

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.


std::hash est un type de classe. Ce que vous faites ici est de construire un std::hash temporaire avec hash<string>() et ensuite (sd.isbn()) appelle l' operator() de ce passage temporaire sd.isbn() .

Ce serait le même que

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

Pour plus d'informations sur l'utilisation d'objets disposant d'un operator() voir: Fonctionnaires C ++ - et leurs utilisations





hash