У меня есть функция со следующей подписью:
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 - нет? Разве переменная обратного вызова не должна быть захвачена в первом случае ([=]
)?