나는 람다의 벡터를 만들려고하지만 실패했습니다 :C++ 11에서 (동일한 유형의) 람다 벡터를 만들 수없는 이유는 무엇입니까?
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
업 # 2 행으로, compiles fine을. 그러나 라인 # 3 compilation error을 제공합니다
error: no matching function for call to 'std::vector<main()::<lambda()>>::push_back(main()::<lambda()>)'
나는 함수 포인터 또는 함수 객체의 벡터의 벡터를 원하지 않는다. 그러나 실제 람다 식을 캡슐화하는 함수 객체의 벡터가 나를 위해 작동합니다. 이것이 가능한가?
"기능 포인터 벡터 나 기능 개체 벡터가 필요 없습니다." 그러나 그것이 당신이 요구 한 것입니다. 람다 **는 ** 함수 객체입니다. –
밀접하게 관련 : [C++ 11에서 "auto"로 추론 할 때 람다 유형은 무엇입니까?] (http://stackoverflow.com/q/7951377/514235). – iammilind