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

  • Creavite

    Creavite

    8 Mart 2009
  • SaMmM123

    SaMmM123

    3 Mayıs 2006
  • SignatureSeries

    SignatureSer

    24 Aralık 2006