c++ - Как понять две пары круглых скобок в этом фрагменте кода?



hash (1)

std::hash - тип класса. То, что вы здесь делаете, это создание временного std::hash с hash<string>() а затем (sd.isbn()) вызывает operator() этого временного прохода sd.isbn() .

Это будет то же самое, что и

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

Для более подробного ознакомления с использованием объектов, которые имеют operator() см .: C ++ Functors - и их использование

Этот код из C ++-праймера с.446:

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

Я не понимаю возвращаемое выражение с двумя парами круглых скобок. Перед книгой нет подобного синтаксиса.





hash