在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
最佳答案
是的,需要使用分号,并且编译器将显示错误,例如“语法错误:缺少';'...”。