Rumah >pembangunan bahagian belakang >C++ >Bolehkah Parameter Templat Bergantung pada Argumen Fungsi dalam Fungsi Konsteval C 20?

Bolehkah Parameter Templat Bergantung pada Argumen Fungsi dalam Fungsi Konsteval C 20?

DDD
DDDasal
2024-10-23 20:37:30256semak imbas

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

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!

Kenyataan:
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