Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Для более подробной информации об использовании объектов с operator() см. С++-функторы - и их использование