SORU
19 EYLÜL 2011, PAZARTESİ


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
19 EYLÜL 2011, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • campos9896

    campos9896

    24 Mart 2012
  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012