如何理解这段代码片段中的两对括号?

此代码来自C ++底层 p.446:

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

我不明白带有两对括号的返回expression式。 本书前面没有类似的语法。

std::hash是一个类的types。 你在这里做的是用hash<string>()构造一个临时std::hash ,然后(sd.isbn())调用临时的sd.isbn()

这将是一样的

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

有关使用具有operator()对象的更多信息,请参阅: C ++函子及其用法