Memahami Lambda Generik dalam C 14
Diperkenalkan dalam C 14, lambda generik menyediakan cara untuk menulis ungkapan lambda yang beroperasi pada nilai mana-mana taip. Namun, persoalan timbul: bagaimana mekanisme ini berfungsi?
Pelaksanaan Lambda Generik
Tidak seperti lambda biasa dalam C 11, lambda generik menggunakan operator panggilan templat dalam mereka jenis penutupan. Apabila kata kunci [auto](https://en.cppreference.com/w/cpp/keyword/auto) muncul dalam senarai parameter, pengkompil menjana operator panggilan templat dan bukannya yang standard.
Contoh:
auto glambda = [](auto a) { return a; };
Kod ini menjana jenis penutupan dengan panggilan berikut operator:
class /* unnamed */ { public: template<typename T> T operator () (T a) const { return a; } };
Definisi Standard
Menurut perenggan 5.1.2/5 C 14 Draf Standard n3690, pengendali panggilan jenis penutupan lambda generik mempunyai sifat berikut:
Persamaan dengan Templat C lwn. Generik Java
Lambda generik adalah serupa dengan templat C kerana pengkompil menjana fungsi unik dengan berbeza jenis hujah berdasarkan parameter templat. Walau bagaimanapun, ia berbeza daripada generik Java, yang menggunakan pemadaman jenis pada masa jalan untuk mengekalkan maklumat jenis pada masa penyusunan. Lambda generik, sebaliknya, membuat penutupan khusus secara statik dengan jenis yang jelas.
Atas ialah kandungan terperinci Bagaimanakah Lambdas Generik dalam C 14 Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!