如何理解这段代码片段中的两对括号?
此代码来自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 ++函子及其用法