在C++ Primer Plus一书中,我看到以下示例:

auto mod3 = [](int x){return x % 3 == 0; }  //<---- note no semicolon
conut1 = std::count_if(n1.begin(), n1.end(), mod3);

在我自己的代码中,我只是尝试通过以下方式使用它:
auto compareEntry = [](PCEntry* a, PCEntry* b) { return (a->getSize() < b->getSize());  }; //<--- semicolon
std::priority_queue< PCEntry*, std::vector<PCEntry*>, decltype(compareEntry) > sorted(compareEntry);

我对此代码有疑问,直到我在堆栈溢出后的lambda之后添加分号为止。

我的问题:

这本书有误吗?还是我错过了什么。
在我看来不一致。

以防万一:
书籍:C++ Primer Plus(第六版)S.普拉塔页面:1189

最佳答案

是的,需要使用分号,并且编译器将显示错误,例如“语法错误:缺少';'...”。

07-24 14:09