SORU
21 HAZİRAN 2013, Cuma


Nasıl genel lambda C 14.

Nasıl genel lambda (auto bağımsız değişken olarak bir anahtar sözcük türü) C 14 standart olarak çalışır?

Hakkında C şablonlar nerede her biri farklı değişken türü derleyici oluşturur yeni bir işlev ile aynı beden ama yerini türleri (derleme zamanı polimorfizmi) yoksa daha çok benzer için Java jenerik (tür silme)?

Kod örneği:

auto glambda = [](auto a) { return a; };

CEVAP
21 HAZİRAN 2013, Cuma


Genel Lambda C 14 eklendi.

Sadece, kapatma türü lambda deyimi tarafından tanımlanan bir olacakşablon oluşturduçağrı operatörünün yerine 11 Lambda (auto parametre listesinde en az bir kez göründüğünde tabii ki) C, non-şablon normal bir arama operatörü.

Böylece örnek:

auto glambda = [] (auto a) { return a; };

glambda bu tür bir örnek:

class /* unnamed */
{
public:
    template<typename T>
    T operator () (T a) const { return a; }
};

Paragraf C 5.1.2/5 14 Standart Taslak n3690 verilen lambda ifade kapatılması türü çağrı operatörü nasıl tanımlandığını belirtir:

Genel olmayan lambda ifade için bir kapatma türü kamu satır içi işlev çağrısı operatörü (13.5.4) kimin parametreleri ve dönüş türü lambda-ifade tarafından açıklanmıştır-Bildirge parametresi-cümle geçiyor. ve sonunda dönüş tipi sırasıyla.Genel bir lambda için, kapatma türü kamu satır içi işlev çağrısı var bir icat yazın meydana gelen operatör üye şablonu (14.5.2) şablon parametre lambda otomatik her örneği için bildirim parametre-yan görünüm için. İcat yazarsanız ilgili parametre bildirimi ilan şablonu parametre parametre paketidir fonksiyon bir parametre pack (8.3.5). İşlev çağrısının dönüş tipi ve işlev parametreleri operatör şablon lambda-ifade-dönüş-tipi sondaki ... ... türetilmiştir ve parametre-declarationclause ile decl-belirteçleri-Bildirge parametresi-hükmü otomatik her geçtiği değiştirerek karşılık gelen adı da şablon parametre icat etti.

Nihayet:

Her farklı değişken türü derleyici aynı vücut fonksiyonları oluşturur nerede şablonları benzer ama farklı türleri ya da Java jenerik daha benzer mi?

Yukarıdaki paragraf açıkladığı gibi, genel Lambda şablonu esas alan bir çağrı operatörü ile benzersiz, isimsiz funktorlar için sözdizimsel şeker. Bu sorunun cevabı :)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007