如何使用boost::signals2::signal将不可复制对象用作插槽

如何使用boost::signals2::signal将不可复制对象用作插槽,boost,boost-signals2,Boost,Boost Signals2,我有一个不可复制对象的实例,我想与boost信号一起使用。connect方法要求我的functor是可复制的。有办法解决这个问题吗?如何删除下面代码中的注释 #include <iostream> #include <boost/signals2.hpp> struct Noncopyable { Noncopyable() {}; void operator()() { std::cerr << "hi Noncopyable" <<

我有一个不可复制对象的实例,我想与boost信号一起使用。connect方法要求我的functor是可复制的。有办法解决这个问题吗?如何删除下面代码中的注释

#include <iostream>
#include <boost/signals2.hpp>

struct Noncopyable
{
  Noncopyable() {};
  void operator()() { std::cerr << "hi Noncopyable" << std::endl; }
 private:
  Noncopyable(Noncopyable const&);
};

int main(void)
{
  Noncopyable no_copy;
  boost::signals2::signal<void ()> sig;
  //sig.connect(no_copy);
  sig();
}
#包括
#包括
结构不可复制
{
不可复制(){};
void operator(){std::cerr使用(或
std::ref
)函数通过引用传递这样的对象:

#include <iostream>
#include <boost/signals2.hpp>
#include <boost/ref.hpp>

struct Noncopyable
{
  Noncopyable() {};
  void operator()() { std::cerr << "hi Noncopyable" << std::endl; }
 private:
  Noncopyable(Noncopyable const&);
};

int main(void)
{
  Noncopyable no_copy;
  boost::signals2::signal<void ()> sig;
  sig.connect(boost::ref(no_copy));
  sig();
}
#包括
#包括
#包括
结构不可复制
{
不可复制(){};
void运算符(){std::cerr