C++ 如何比较boost::signal2中的插槽类型

C++ 如何比较boost::signal2中的插槽类型,c++,boost,stl,C++,Boost,Stl,如果使用不同的函数(待调用)连接到信号,如何检查函数是否已连接? 通常我会比较函数指针的地址,但如何访问该指针 例如: boost::signals2::signal<void ()> sig; sig.connect(Callback1()); sig.connect(Callback2()); ?您可以使用一个boost::signals2::connection对象来存储信号与插槽的连接,因此您可以这样做: boost::signals2::connection c = s

如果使用不同的函数(待调用)连接到信号,如何检查函数是否已连接? 通常我会比较函数指针的地址,但如何访问该指针

例如:

boost::signals2::signal<void ()> sig;

sig.connect(Callback1());
sig.connect(Callback2());

您可以使用一个
boost::signals2::connection
对象来存储信号与插槽的连接,因此您可以这样做:

boost::signals2::connection c = sig.connect(Callback1());
// another call
if (! c.connected()){
     sig.connect(Callback1());
} else {
     cout << "signal with this slot is connected! << endl;
}
boost::signals2::connection c=sig.connect(Callback1());
//另一个电话
如果(!c.connected()){
sig.connect(Callback1());
}否则{

我是否可以尝试先调用disconnect,但在函数_equal_impl中查找==运算符以比较插槽时出现编译器错误。谢谢,但是我可以检查它是否与Callback1()正确连接吗?
boost::signals2::connection c = sig.connect(Callback1());
// another call
if (! c.connected()){
     sig.connect(Callback1());
} else {
     cout << "signal with this slot is connected! << endl;
}