The code below prints worldworld
to the console rather than hello world
. I can fix this by changing sig.connect([&]() { slot(); });
to sig.connect(slot)
, but don't understand why. What's happening?
#include <iostream>
#include <boost/signals2.hpp>
void add_slot(boost::signals2::signal<void()> &sig,
std::function<void()> slot) {
sig.connect([&]() { slot(); });
}
int main() {
boost::signals2::signal<void()> sig;
add_slot(sig, []() {
std::cout << "hello ";
});
add_slot(sig, []() {
std::cout << "world";
});
sig();
}
Aucun commentaire:
Enregistrer un commentaire