Почему мой вызываемый объект не вызывается из лямбда-выражения? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть функция со следующей подписью:

void MyController::a(const Req &req, std::function<void (const Resp &)> &&callback, const std::string &slug);

Затем из первой вызывается другая функция с очень похожей подписью:

void MyController::page(const Req &req, const std::function<void (const Resp &)> &&callback, const std::string &slug);

У меня есть следующее вызов в конце этой функции, где обратный вызов в page() никогда не вызывается:

Snippet 1

addTicket(data, [=](auto id) {
    …
    page(req, std::move(callback), slug);
});

Но это работает:

Фрагмент 2

addTicket(data, [=](auto id) {
    …
});

page(req, std::move(callback), slug);

Почему работает фрагмент 2, а фрагмент 1 - нет? Разве переменная обратного вызова не должна быть захвачена в первом случае ([=])?

...