私はラムダのベクトルを作成しようとしているが、失敗しました:それはcompiles fine、ライン#2までC++ 11で(同じタイプの)ラムダのベクトルを作成できないのはなぜですか?
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
を。しかし、ライン#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