Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Lambdas Generik C 14 Mencapai Gelagat Jenis-Generik?

Bagaimanakah Lambdas Generik C 14 Mencapai Gelagat Jenis-Generik?

DDD
Lepaskan: 2024-12-10 04:59:08
asal
1038 orang telah melayarinya

How Do C  14 Generic Lambdas Achieve Type-Generic Behavior?

Lambda Generik dalam C 14

Dalam C 14, lambda generik membenarkan mentakrifkan lambda dengan auto sebagai jenis argumen, membolehkan gelagat jenis-generik . Memahami cara ia berfungsi memberi penerangan tentang mekanisme asasnya.

Operator Panggilan Bertemplat

Lambda generik mentakrifkan jenis penutupan dengan operator panggilan bertemplat dan bukannya bukan templat seperti C 11 lambdas. Ini bermakna apabila auto muncul dalam senarai parameter, pengkompil mencipta templat fungsi untuk operator panggilan.

Contoh:

auto glambda = [](auto a) { return a; };
Salin selepas log masuk

Lambda di atas mencipta contoh jenis berikut:

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

Jenis Pemadaman lwn. Templat Polimorfisme

Lambda generik lebih dekat dengan generik Java, yang menggunakan pemadaman jenis. Tidak seperti templat C, yang menjana berbilang fungsi dengan jenis yang berbeza, lambda generik mencipta satu fungsi dengan operator panggilan pemadam jenis.

Senarai Parameter Jenis

Lambda generik templat operator panggilan termasuk senarai parameter templat untuk setiap kejadian auto dalam pengisytiharan parameter. Jenis setiap parameter templat sepadan dengan jenis pembolehubah yang sepadan.

Kesimpulan:

Lambda generik dalam C 14 membolehkan pengaturcaraan jenis-generik dengan mentakrifkan ungkapan lambda dengan operator panggilan templat. Ini menyediakan cara ringkas untuk mencipta fungsi pemadam jenis yang serupa dengan generik Java.

Atas ialah kandungan terperinci Bagaimanakah Lambdas Generik C 14 Mencapai Gelagat Jenis-Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan