Dalam bidang pengaturcaraan meta, timbul teknik menarik pembilang constexpr, yang dikenali sebagai metaprogramming stateful. Teknik rumit ini telah mencetuskan kekaguman dan kegelisahan di kalangan pembangun. Persoalannya masih berlarutan: dengan kemunculan C 17, adakah kesahihannya telah dikaji semula?
Metaprogramming Berstatus dalam C 14
Seperti yang ditunjukkan oleh coretan kod yang disediakan, pengaturcaraan meta stateful dalam C 14 memanfaatkan pengisytiharan rakan, ADL dan constexpr untuk mencipta pembilang yang mengekalkan keadaannya merentas seruan. Walaupun sifatnya yang kelihatan aneh, teknik ini sah di bawah C 14.
The Dark Cloud: CWG Issue 2118
Walau bagaimanapun, amalan ini telah mendapat perhatian daripada piawaian C jawatankuasa, khususnya melalui keluaran aktif CWG keluaran 2118. Jawatankuasa mengiktiraf kekaburan teknik ini dan menyokong persempadanan semula sebagai tidak berbentuk.
Pendirian Senyap C 17
Walaupun CWG bimbang, C 17 tidak secara jelas menangani isu ini. Ini membayangkan bahawa pengaturcaraan meta stateful kekal sah dalam C 17, walaupun dengan amaran bahawa nasibnya mungkin akan diubah pada masa hadapan.
Implikasi Retroaktif
Sekiranya mekanisme larangan dibuat direka, ada kemungkinan bahawa pengaturcaraan meta stateful mungkin secara retroaktif dianggap tidak terbentuk. Ini akan menjadikan coretan kod yang dibentangkan dalam soalan tidak sah, menimbulkan potensi risiko untuk pangkalan kod sedia ada.
Kesimpulan
Masa depan pengaturcaraan meta stateful masih tidak menentu. Walaupun ia masih sah di C 17, ketidakselesaan CWG dengan teknik tersebut menunjukkan bahawa hari-harinya mungkin terbilang. Pembangun yang menggunakan teknik ini harus mengetahui potensi kaveat ini dan memantau kemas kini masa hadapan dalam standard C untuk memastikan integriti kod mereka.
Atas ialah kandungan terperinci Adakah Pengaturcaraan Meta Stateful Sah dalam C 17?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!