Как понять две пары круглых скобок в этом фрагменте кода?
Этот код из С++-праймера с .446:
return hash<string>() (sd.isbn());
Я не понимаю возвращаемое выражение с двумя парами круглых скобок. Там нет подобного синтаксиса перед книгой.
Ответ 1
std::hash - это тип класса. То, что вы здесь делаете, это создание временного std::hash с hash<string>(), а затем (sd.isbn()) вызывает operator() этой временной передачи это sd.isbn().