Neden't İ C 11 lambda vektör yaratabilir mi?
Lambda bir vektör oluşturmak için çalışıyordum, ama başarısız oldu:
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
*2,* 5 * satır için. Ama satır#3 compilation error verir:
hata: arama için eşleşen bir işlev':: std vector<main()::<lambda()^< . ::push_back (() ana::<lambda()>)'
İşlev işaretçisi veya işlev nesneleri vektör vektör istemiyorum. Ancak, saklanması işlevi nesneleri vektörgerçeklambda ifadeleri, benim için iyi olmaz. Bu mümkün mü?
CEVAP
Her lambda farklı ise aynı imza bile türü vardır. Eğer böyle bir şey yapmak istiyorsan çalışma zamanı std::function
gibi şifrelenmiş bir kap kullanmalısınız.
örneğin:
std::vector<std::function<int()>> functors;
functors.push_back([&] { return 100; });
functors.push_back([&] { return 10; });
İşlev işaretçisi veya işlev vektör vektör istemiyorum nesneler.
Evet, yüz adamın geliştirici bir ekip ile yüksek maaşlı güzel bir iş tüm hayallerim geliştirmek istiyorum, ama bu da olmayacak. Oh, ve aynı zamanda gerçekten yapamam beri yemek ve temizlik yapabilen çok cazip bir eş istiyorum.
C# Lambda ifadeleri: onları Neden kull...
Neden't referans vektör yapabilir...
Neden C-yakalama-değeri 0 x'in la...
Neden Lambda daha düz fonksiyonları da...
Neden bazı C# ifadeleri statik yönteml...