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

时间:2016-10-13 14:35:40

标签: c++ hash

此代码来自 C ++ primer p.446:

private IReport DoSomething(Func<IInstructionSheetFactory, IReport> x)
    {
        return x(_factory);
    }

我不理解带有两对括号的返回表达式。在本书前面没有类似的语法。

1 个答案:

答案 0 :(得分:50)

std::hash是一种类型。你在这里做的是用std::hash构建一个临时hash<string>(),然后(sd.isbn())调用临时传递sd.isbn()的{​​{3}}。

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

有关使用operator()的对象的更多信息,请参阅:operator()