【发布时间】:2014-03-19 08:52:27
【问题描述】:
我正在使用 C++14 lambdas(实际上只是 lambdas),并且我有一个我正在尝试编写的函数(管道)。前提是它将采用一个单元 lambda 和一个一元 lambda 数组,然后它将在该单元上运行并生成一个新单元以发送到管道中的下一个单元,直到您通过最后一个 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;
};
当前的问题是,clang 正在对数组进行反击:
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.
这对 lambdas 来说是不可能的吗?我需要抽出std::function吗?我是不是走错了路?
【问题讨论】: