3
我在玩C++ 14 lambda(一般來說只是lambdas),我有一個函數(管道),我試圖寫。前提是它需要一個單位lambda和一個一元lambda表達式數組,然後它將在單元上運行,併產生一個新的單元,以發送到管道中的下一個單元,直到你通過最後一個lambda並返回final單元。我當前的代碼是:使用lambda參數數組
auto pipeline = [](auto u, auto callbacks[]){
for(int i = 0; i<sizeof(callbacks)/sizeof(callbacks[0]);i++){
u = bind(u,callbacks[i]);
}
return u;
};
目前的問題是,鐺被踢回陣列上說:
testFuture.cpp:183:111: error: no matching function for call to object of type 'func::<lambda at ./func.hpp:30:19>'
cout<<"pipeline(unit(10),{addf(4),curry(mul,2)}):"<<bind(unit(bind(unit(10))(addf(4))))(curry(mul,2))<<"|"<<pipeline(unit(10),{{addf(4),curry(mul,2)}})()<<endl;
^~~~~~~~
./func.hpp:30:19: note: candidate template ignored: couldn't infer template argument '$auto-0-1'
auto pipeline = [](auto u, auto callbacks[]){
^
1 error generated.
這是根本不可能的lambda表達式?我需要鞭打std::function
?我只是以這種錯誤的方式去做?