2017-02-22 2 views
1

В книге C++ Primer Plus я вижу следующий пример:Является ли это опечатка в 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); 

У меня были проблемы с этим кодом, пока я не добавил точку с запятой после лямбды после сообщения о переполнении стека.

Мой вопрос:

Является ли это ошибка в книге? Или я что-то упускаю. Это выглядит несовместимо со мной.

Только в случае, если: Книга: C++ Primer Plus (шестое издание) С. Прата страницы: 1189

+2

Это опечатка в книге. –

+2

Похоже, опечатка в книге. Там должен быть ';' в конце. – NathanOliver

+0

@NathanOliver Спасибо, ребята. – Illia

ответ

1

Да точка с запятой необходима, и компилятор выводит сообщение об ошибке, что-то вроде «ошибка синтаксиса: недостающего«; »...".

+0

Большое спасибо. – Illia

Смежные вопросы