Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Lambdas Generik dalam C 14 Berfungsi?

Bagaimanakah Lambdas Generik dalam C 14 Berfungsi?

Susan Sarandon
Susan Sarandonasal
2024-12-06 00:53:11143semak imbas

How Do Generic Lambdas in C  14 Work?

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:

  • Setiap kejadian [auto](https://en.cppreference.com/w/cpp/keyword/auto) dalam senarai parameter sepadan dengan parameter templat jenis ciptaan.
  • Jenis pemulangan operator panggilan dan parameter fungsi diperolehi daripada jenis pengembalian trailing lambda dan klausa pengisytiharan parameter dengan menggantikan setiap [auto](https://en.cppreference.com/w/cpp/keyword/auto) dengan nama parameter templat ciptaan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn