Когда у меня есть функция обратного вызова, как это:
using MessageCallback =
std::function<void(const Message &, uint64_t deliveryTag, bool redelivered)>;
Я мог бы объявить статическую функцию обратного вызова внутри класса:
static void MessageCB(const AMQP::Message &message,
uint64_t deliveryTag,
bool redelivered)
{...}
Но я не могу получить доступ к переменным-членам внутри этой функции обратного вызова.
Когда я пишу лямбда-функцию следующим образом:
auto MessageCB= [&](const AMQP::Message &message,
uint64_t deliveryTag,
bool redelivered)
{...}
Затем я мог бы использовать любые переменные-члены из контекста, где я объявил лямбду.
Как это работает?
Как именно работает пункт захвата?
В чем отличие статической функции обратного вызова?