Bolehkah Fungsi Consteval Mendayakan Pergantungan Parameter Templat pada Argumen Fungsi dalam C 20?

Linda Hamilton
Lepaskan: 2024-10-23 16:43:02
asal
477 orang telah melayarinya

Can Consteval Functions Enable Template Parameter Dependence on Function Arguments in C  20?

Fungsi Konsteval dan Ketergantungan Parameter Templat pada Argumen Fungsi

Dalam C 17, menggunakan fungsi yang mengembalikan pemalar terus dalam pengisytiharan parameter templat adalah dilarang kerana kekangan pelaksanaan masa jalan. Dengan pengenalan fungsi konsteval dalam C 20, kekangan ini dijangka akan dihapuskan. Walau bagaimanapun, adakah ini akan membolehkan kod berikut berjaya dikompil?

<code class="cpp">consteval int foo(int i) {
    return std::integral_constant<int, i>::value;
}</code>
Salin selepas log masuk

Tidak.

Walaupun keperluan penilaian masa kompilasi fungsi consteval, definisi fungsi itu sendiri sahaja menjalani taip sekali. Oleh itu, parameter fungsi tidak akan sekali-kali dianggap sebagai ungkapan pemalar teras kerana potensi percanggahan menaip.

Penghadan ini selanjutnya ditekankan dalam cadangan C 20, yang secara eksplisit mengecualikan parameter daripada dianggap sebagai ungkapan malar dalam contohnya :

<code class="cpp">consteval int sqrsqr(int n) {
  return sqr(sqr(n)); // Not a constant-expression at this point,
}                     // but that's okay.</code>
Salin selepas log masuk

Oleh itu, fungsi konsteval tidak membenarkan parameter templat bergantung pada hujah fungsi kerana parameter tidak mempunyai jaminan menaip yang diperlukan sebagai ungkapan malar.

Atas ialah kandungan terperinci Bolehkah Fungsi Consteval Mendayakan Pergantungan Parameter Templat pada Argumen Fungsi dalam C 20?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!