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

  • Rachel Talbott

    Rachel Talbo

    26 Ocak 2011
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005