在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。Prata页数:1189
答案 0 :(得分:1)
是的,分号是必需的,编译器会显示错误,例如“语法错误:缺少';'...”。