Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah C 14 Generik Lambdas Mencapai Jenis Fleksibiliti Menggunakan Kata Kunci `auto`?

Bagaimanakah C 14 Generik Lambdas Mencapai Jenis Fleksibiliti Menggunakan Kata Kunci `auto`?

Patricia Arquette
Lepaskan: 2024-12-16 16:36:17
asal
819 orang telah melayarinya

How Do C  14 Generic Lambdas Achieve Type Flexibility Using the `auto` Keyword?

Memahami Lambda Generik dalam C 14 Varian Kata Kunci Auto

Dalam C 14, lambdas generik, sejenis ungkapan lambda dengan kata kunci automatik sebagai jenis hujah, memberikan fleksibiliti yang dipertingkatkan. Bertentangan dengan lambda C 11 dengan operator panggilan bukan templat, lambda generik mempunyai operator panggilan templat dalam jenis penutupan yang mereka tentukan.

Sebagai contoh, kod berikut menunjukkan lambda generik:

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

Dalam kes ini, jenis penutupan glambda akan ditakrifkan sebagai:

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

Ini bermakna glambda itu ialah contoh functor yang unik dan tidak dinamakan dengan operator panggilan templat. Setiap kejadian auto dalam pengisytiharan parameter lambda sepadan dengan parameter templat jenis ciptaan, membenarkan operator panggilan mengendalikan argumen jenis yang berbeza.

Piawaian C 14 (n3690) menentukan bahawa operator panggilan jenis penutupan untuk lambda generik mempunyai senarai parameter templat dengan satu parameter templat jenis ciptaan untuk setiap auto dalam lambda parameter-deklarasi-klausa. Jenis pemulangan dan parameter fungsi diperoleh daripada jenis pengembalian dan parameter-pengisytiharan-klausa lambda dengan auto digantikan dengan nama parameter templat ciptaan yang sepadan.

Ringkasnya, lambda generik dalam C 14 mewakili fungsi unik tanpa nama dengan operator panggilan templat. Ini berbeza daripada polimorfisme berasaskan templat C, di mana pengkompil menjana fungsi baharu dengan jenis yang diganti untuk setiap jenis hujah. Ia lebih sejajar dengan generik Java, yang melibatkan pemadaman jenis semasa penyusunan.

Atas ialah kandungan terperinci Bagaimanakah C 14 Generik Lambdas Mencapai Jenis Fleksibiliti Menggunakan Kata Kunci `auto`?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan