2
我試圖做這樣的事情:如何使用boost.lambda和boost.thread來獲取線程的返回值?
using namespace boost::lambda;
using boost::thread;
int add(int a, int b) {return a+b;}
int sum, x=2, y=6;
thread adder(var(sum) = add(_1, _2), x, y);
adder.join();
cout << sum;
我得到一個編譯錯誤:
cannot convert parameter 1 from 'boost::arg' to 'int'
並推遲一個函數調用,使用'的調用bind'。 – GManNickG 2011-05-11 23:43:50
我絕對需要使用這個函數,'add'例子是一個粗略的簡化。 :)但我試過你的語法:'線程加法器(var(sum)= bind(add,_1,_2),x,y);' 我在MSVC 9(boost 1.43)上遇到錯誤。修正爲: 'boost/lambda/detail/function_adaptors.hpp(260):error C2664:'int(int,int)':無法將參數2從'rt2'轉換爲'int' 與 [ 結果= INT, Func鍵= INT(INT,INT), RET = INT, A2 = RT1, A3 = RT2, ARG1 = INT, Arg2所得= INT, A1 = RT1, I = 2 ]' – 2011-05-12 15:03:58
沒關係。我忘了'使用boost :: lambda :: _ 1;'等。我想知道爲什麼我沒有得到更多的暴露錯誤。我甚至不確定我在範圍內有哪些_1/_2!我沒有任何使用boost或std的命名空間。 – 2011-05-12 15:13:10