2017-05-20 45 views
1

我沒有設法找到了爲什麼這個代碼不 工作:如何將lambda傳遞給lambda?

#include <iostream> 
#include <functional> 

using namespace std; 

int main() 
{ 
    auto xClosure = [](const function<void(int&)>& myFunction) { 
    myFunction(10);}; 

    xClosure([] 
     (int& number) -> void 
     {cout<<number<<endl; 
     }); 
    return 0; 
} 

它返回:

g++ test.cc -o test -std=c++14 
test.cc:9:5: error: no matching function for call to object of type 'const function<void 
    (int &)>' 

回答

9

這有什麼好做lambda表達式:

void test(const function<void(int&)>& myFunction) { 
    myFunction(10); 
} 

由於相同的原因,此編譯失敗;您不能將文字10int&綁定。

也許你的意思

const function<void(int)>& myFunction 

這樣做,也改變你的拉姆達的簽名應該讓你的代碼編譯。

相關問題