Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Pengendali ' ' Berfungsi dengan Lambda Tidak Menangkap dalam C ?

Bagaimanakah Pengendali ' ' Berfungsi dengan Lambda Tidak Menangkap dalam C ?

DDD
Lepaskan: 2024-12-22 18:21:14
asal
363 orang telah melayarinya

How Does the ' ' Operator Work with a Non-Capturing Lambda in C  ?

Lambda Positif: ' []{}' - Rahsia Terbongkar

Dalam bidang pengekodan C, gelagat operator ' ' digunakan pada lambda (' []{}') telah mencetuskan rasa ingin tahu. Walaupun kod itu kelihatan tidak konvensional, ia secara mengejutkan berjaya menyusun dengan penyusun utama. Tetapi bagaimanakah pengecualian kepada norma ini berfungsi?

Penukaran kepada Penunjuk Fungsi

Kunci untuk memahami tingkah laku ini terletak pada bebanan operator ' '. Apabila digunakan pada lambda, ' ' mencetuskan penukaran kepada penuding fungsi lama biasa. Ini mungkin kerana lambda yang dimaksudkan adalah tidak menangkap, yang bermaksud ia tidak merujuk sebarang pembolehubah luaran.

Menurut piawaian C (bahagian 5.1.2), objek penutupan lambda yang tidak menangkap mempunyai fungsi penukaran bukan maya awam yang mengembalikan penunjuk fungsi. Penunjuk ini menunjuk kepada fungsi yang mempunyai gelagat yang sama seperti lambda.

Lebih Beban Operator Terbina dalam

Operator ' ' mempunyai beban lampau terbina dalam yang menukar sebarang jenis kepada penuding . Dalam kes lambda, fungsi penukaran yang dinyatakan sebelum ini dipilih sebagai kelebihan beban calon. Hasilnya ialah penunjuk fungsi parameter yang sama dan jenis pengembalian seperti operator panggilan fungsi lambda.

Jadi, apabila ' ' digunakan pada lambda pertama, ia menukar objek penutupan lambda menjadi penunjuk fungsi. Ini memungkinkan untuk menetapkan objek penutupan lambda kedua kepada penuding fungsi yang sama, kerana kedua-dua lambda mempunyai jenis yang serasi.

Keakuran Standard

Ya, kod yang menggunakan ' []{}' ialah pematuhan piawai. Piawaian C membenarkan penukaran objek penutupan lambda yang tidak menangkap kepada penunjuk fungsi. Tingkah laku ini membolehkan beberapa helah pengekodan yang mengejutkan tetapi sah.

Atas ialah kandungan terperinci Bagaimanakah Pengendali ' ' Berfungsi dengan Lambda Tidak Menangkap dalam C ?. 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