Rumah >pembangunan bahagian belakang >C++ >Bolehkah Parameter Templat Bergantung pada Argumen Fungsi dalam Fungsi Konsteval C 20?
Fungsi Konsteval dan Parameter Templat Bergantung pada Argumen Fungsi
Dalam C 17, parameter templat tidak boleh bergantung pada argumen fungsi kerana pengkompil masih perlu menjana arahan masa jalan untuk fungsi bukan constexpr, walaupun ia dinilai pada masa kompilasi.
C 20 Consteval Functions
C 20 memperkenalkan fungsi consteval, yang mesti dinilai pada masa penyusunan, mengalih keluar kekangan masa jalan. Walau bagaimanapun, persoalannya tetap: adakah ini bermakna parameter templat kini boleh bergantung pada argumen fungsi?
Tiada Elaun untuk Parameter Templat Bergantung
Walaupun terdapat pengenalan fungsi konsteval, jawapannya tidak. Kertas itu mengakui bahawa parameter tidak bertujuan untuk dianggap sebagai ungkapan teras teras. Ini disebabkan oleh kemungkinan percanggahan menaip, seperti yang ditunjukkan oleh contoh dalam kertas:
consteval int sqrsqr(int n) { return sqr(sqr(n)); // Not a constant-expression at this point, } // but that's okay.
Oleh itu, parameter fungsi tidak akan sekali-kali dianggap sebagai ungkapan malar, menghalang parameter templat daripada bergantung padanya.
Atas ialah kandungan terperinci Bolehkah Parameter Templat Bergantung pada Argumen Fungsi dalam Fungsi Konsteval C 20?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!