Во-первых, в C ++ вам не нужно (и это обычно считается плохим стилем) ставить struct
перед использованием структуры.Просто const memory_leak_report&
подойдет.
Во-вторых, вы говорите нам, как определяется структура memory_allocation_record
, но лямбда принимает в качестве параметра memory_leak_report
, который, насколько я вижу, это функция .
это ваша ошибка?Предполагалось, что вместо лямбды будет взято memory_allocation_record
?
Что, конечно, подводит нас к последнему пункту.Если вы получили ошибку, не думаете ли вы, что было бы уместно сообщить нам, что это за ошибка?В противном случае, мы должны догадаться, что, по нашему мнению, может быть проблемой в вашем коде.
Редактировать
Хорошо, как я и подозревал, похожеэта проблема.Я могу рекомендовать на самом деле читать ошибки компилятора.Вот почему они там.;)
Взять первую строку ошибки:
/usr/include/c++/4.5/bits/stl_algo.h:4185:2: error: no match for call to ג(memory_leak_report()::<lambda(const memory_leak_report()::memory_leak_report&)>) (memory_allocation_record&)
убрать ненужные биты:
no match for call to <somethingwithlambdas> (memory_allocation_record&)
Теперь, потому что это лямбда, типнемного сложновато, но, в конечном счете, речь идет о вызове функции, поэтому последние скобки описывают параметр.Другими словами, он пытается вызвать функцию с параметром memory_allocation_record&
, но не может найти соответствующую функцию.
Вместо этого он нашел кандидата, описанного во второй строке:
candidates are: void (*)(const memory_leak_report()::memory_leak_report&) <conversion>
Итак, кандидат, которого он на самом деле нашел , принимает const memory_leak_report&
в качестве параметра.
Теперь вам просто нужно сравнить их.Что это может означать, когда компилятор пытается передать memory_allocation_record&
в функцию, которая ожидает const memory_leak_report&
?