2012-07-07 25 views
14

otrzymuję błąd kompilacji przy użyciu tego:std :: bind do std :: function?

std::vector<std::function<int(int)>> functions; 

std::function<int(int, int)> foo = [](int a, int b){ return a + b; }; 
std::function<int(int)> bar = std::bind(foo, 2); 

functions.push_back(bar); 

Błąd pojawia się:

/usr/include/c++/4.6/functional:1764:40: error: no match for call to '(std::_Bind<std::function<int(int, int)>(int)>) (int)' 

Czy ktoś może mi powiedzieć, jak przekonwertować std::bind w std::function?

Odpowiedz

15
std::function<int(int)> bar = std::bind(foo, 2, std::placeholders::_1); 
+0

Nie '& foo', ale odsuń od tego. – Xeo

+0

Potrzebujesz również 'using namespace std :: placeholders'. – juanchopanza

+0

@Xeo naprawiono, że – inkooboo

Powiązane problemy