Fungsi dan Constexpr Lambda
Soalan: Adakah mungkin untuk menggunakan constexpr dengan fungsi lambda dalam C ?
Dalam contoh kod berikut, pengkompil melaporkan ralat yang berkaitan dengan memerlukan fungsi constexpr:
<code class="cpp">struct Test { static const int value = []() -> int { return 0; } (); };</code>
Jawapan:
Kemas kini ( C 17): Mulai C 17, fungsi lambda dibenarkan dalam ungkapan malar.
Pra-C 17: Lambda tidak dibenarkan pada masa ini dalam ungkapan malar dalam C 14. Walau bagaimanapun , cadangan (N4487) telah dibuat untuk membenarkan ungkapan lambda dan objek penutupan tertentu muncul dalam ungkapan malar.
Jika cadangan ini diterima, ia akan memperkenalkan perubahan berikut:
Perubahan ini akan sejajar dengan gelagat pembina yang ditakrifkan secara tersirat dan fungsi pengendali tugasan, yang boleh disimpulkan sebagai constexpr apabila sesuai.
Atas ialah kandungan terperinci Bolehkah Fungsi Lambda Digunakan dengan `constexpr` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!