2

這段代碼有什麼問題嗎?我不斷收到編譯錯誤。基本上我想連接一個void返回函數到一個非void返回類型的信號。 加速版本:版本1.46.1這個boost :: lambda :: bind用法有什麼問題?

#include <boost/signals2.hpp> 
#include <boost/lambda/bind.hpp> 
#include <boost/lambda/lambda.hpp> 
using namespace boost::signals2; 

void func() 
{ 
    printf("Func called!"); 
} 

main() 
{ 
    signal<int(int)> sig; 
    sig.connect((boost::lambda::bind(func), 1)); 
} 

我收到以下錯誤,而編譯:

/opt/include/boost/signals2/detail/slot_template.hpp: In member function ‘void boost::signals2::slot1<R, T1, SlotFunction>::init_slot_function(const F&) [with F = int, R = int, T1 = int, SlotFunction = boost::function<int(int)>]’: 
/opt/include/boost/signals2/detail/slot_template.hpp:81:9: instantiated from ‘boost::signals2::slot1<R, T1, SlotFunction>::slot1(const F&) [with F = int, R = int, T1 = int, SlotFunction = boost::function<int(int)>]’ 
hello-world-example.cpp:13:51: instantiated from here 
/opt/include/boost/signals2/detail/slot_template.hpp:156:9: error: invalid conversion from ‘int’ to ‘boost::function<int(int)>::clear_type*’ [-fpermissive] 
/opt/include/boost/function/function_template.hpp:1110:14: error: initializing argument 1 of ‘boost::function<R(T0)>::self_type& boost::function<R(T0)>::operator=(boost::function<R(T0)>::clear_type*) [with R = int, T0 = int, boost::function<R(T0)>::self_type = boost::function<int(int)>]’ [-fpermissive] 

感謝。

回答

0

似乎編譯沒有問題上boost版本1.49