Fungsi Lambda Rekursif dalam C : Dilema Kompilasi
Dalam mereka bentuk fungsi lambda rekursif, anda mungkin menghadapi ralat kompilasi. Mari kita mendalami isu yang dihadapi dan terokai penyelesaiannya.
Fungsi lambda yang disediakan, jumlah, mengumpul hasil operasi matematik, istilah, dalam julat nilai. Untuk menjadikannya rekursif, anda cuba menangkap jumlah lambda dengan rujukan: [istilah, seterusnya, &sum](int a, int b).
Walau bagaimanapun, pendekatan ini membawa kepada ralat kompilasi. Ini timbul daripada perbezaan asas antara fungsi lambda yang diisytiharkan dengan auto dan yang mempunyai jenis yang ditentukan sepenuhnya.
Fungsi Lambda yang disimpulkan dengan auto memperoleh jenisnya daripada pemulaannya. Walau bagaimanapun, apabila mencipta lambda rekursif, lambda belum mempunyai jenisnya sendiri. Ini mewujudkan konflik: penutupan lambda perlu mengetahui jenisnya tetapi belum lagi menentukannya.
Untuk menyelesaikan isu ini, tentukan secara eksplisit jenis lambda dengan std::function Kod yang diubah suai:std::function
Pengubahsuaian ini memberikan pengkompil maklumat jenis yang diperlukan , membenarkan fungsi lambda rekursif untuk menyusun dan melaksanakan seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Lambda Rekursif Berfungsi dalam C Menyebabkan Ralat Penyusunan, dan Bagaimana Ia Boleh Diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!