Rumah > pembangunan bahagian belakang > C++ > Apakah Jenis Yang 'auto' Deduksi untuk Ungkapan Lambda C 11?

Apakah Jenis Yang 'auto' Deduksi untuk Ungkapan Lambda C 11?

Barbara Streisand
Lepaskan: 2024-12-06 01:10:10
asal
544 orang telah melayarinya

What Type Does

Meneroka Jenis Potongan Lambda dengan "auto" dalam C 11

Bertentangan dengan tanggapan salah bahawa jenis lambda ialah penunjuk fungsi, ujian baru-baru ini telah mendedahkan keputusan yang tidak dijangka. Apabila cuba untuk menetapkan ungkapan lambda kepada kedua-dua penuding fungsi dan pembolehubah "auto", penegasan gagal. Ini menimbulkan persoalan, apakah jenis lambda yang sebenar apabila disimpulkan dengan kata kunci "auto"?

Untuk menjelaskannya, ungkapan lambda ialah pintasan sintaksis yang berkesan untuk functors. Semasa penyusunan, lambda diubah menjadi objek functor. Elemen dalam kurungan [] menjadi parameter pembina dan pembolehubah ahli functor, manakala parameter dalam kurungan () diterjemahkan ke dalam parameter operator() functor.

Menariknya, lambda yang tidak menangkap pembolehubah (iaitu, mereka yang tidak mempunyai unsur dalam []) boleh ditukar menjadi penunjuk fungsi (walaupun penukaran ini tidak disokong oleh MSVC2010). Walau bagaimanapun, adalah penting untuk menekankan bahawa jenis intrinsik lambda kekal sebagai jenis functor yang tidak ditentukan.

Dalam contoh kod yang disediakan, ungkapan lambda LAMBDA pada mulanya diberikan kepada penunjuk fungsi pFptr dan kemudian kepada "auto " pembolehubah pAuto. Penegasan seterusnya mengesahkan bahawa jenis pFptr dan pAuto adalah sama, yang sememangnya lulus. Ini menunjukkan bahawa kata kunci "auto" berjaya menyimpulkan jenis lambda menjadi penuding fungsi, membenarkan penetapan yang lancar kepada pFptr.

Walau bagaimanapun, perkara utama ialah lambda adalah jenis functor yang tidak ditentukan, tanpa mengira keupayaan mereka untuk dimasukkan ke dalam penunjuk fungsi. Perbezaan ini menyerlahkan fleksibiliti dan kerumitan ungkapan lambda dalam pengaturcaraan C moden.

Atas ialah kandungan terperinci Apakah Jenis Yang 'auto' Deduksi untuk Ungkapan Lambda C 11?. 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