使用 lambdas 添加插槽时出错Boost Signals2

问题描述

下面的代码worldworld 打印到控制台而不是 hello world。我可以通过将 sig.connect([&]() { slot(); }); 更改为 sig.connect(slot)解决此问题,但不明白为什么。发生了什么?

#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();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)