Rumah > pembangunan bahagian belakang > C++ > Adakah Melayan Fungsi Perpustakaan Standard Bukan constexpr sebagai `constexpr` Mematuhi Piawaian C?

Adakah Melayan Fungsi Perpustakaan Standard Bukan constexpr sebagai `constexpr` Mematuhi Piawaian C?

Linda Hamilton
Lepaskan: 2024-12-03 19:32:14
asal
267 orang telah melayarinya

Is Treating Non-constexpr Standard Library Functions as `constexpr` Conforming to the C   Standard?

Merawat Fungsi Perpustakaan Standard Non-constexpr sebagai Constexpr: Analisis Pematuhan

Persoalan timbul sama ada sambungan pengkompil yang merawat standard bukan constexpr perpustakaan berfungsi sebagai constexpr adalah mematuhi. Walaupun piawaian draf C 11 dibenarkan, yang mencadangkan rawatan sedemikian boleh dibenarkan, perkembangan seterusnya telah menjelaskan perkara itu.

C 14 Larangan Eksplisit

Dalam C 14 , draf bahagian standard 17.6.5.6 dengan jelas menyatakan bahawa pelaksanaan tidak boleh mengisytiharkan sebarang tandatangan fungsi perpustakaan standard sebagai constexpr melainkan diperlukan secara eksplisit. Keputusan ini menghalang layanan pematuhan fungsi perpustakaan standard bukan constexpr sebagai constexpr.

Sambungan GCC

GCC telah melaksanakan sambungan yang menganggap fungsi terbina dalam tertentu sebagai constexpr . Walau bagaimanapun, sambungan ini dianggap tidak mematuhi berdasarkan piawaian C 14 yang dikemas kini.

Peraturan Seolah-olah dan Tingkah Laku Boleh Diperhati

Pada mulanya tidak jelas sama ada as- jika peraturan dibenarkan menganggap fungsi bukan constexpr sebagai constexpr. Peraturan seakan-akan membenarkan pelaksanaan menyimpang daripada keperluan piawai selagi ia menghasilkan gelagat yang boleh diperhatikan yang setara. Walau bagaimanapun, mengubah status konstexpr fungsi mempengaruhi tingkah laku yang boleh diperhatikan, seperti yang ditunjukkan oleh ujian SFINAE, yang akan berkelakuan berbeza apabila menggunakan kod yang sama.

Mematuhi Mitigasi

Untuk membuat Mematuhi sambungan GCC, pengkompil perlu mengeluarkan amaran dalam mod pematuhan ketat (mis., -std=c 11 -pedantic) apabila fungsi perpustakaan standard bukan constexpr digunakan dalam konteks constexpr.

Pengecualian Intrinsik

Intrinsik pengkompil tidak diliputi oleh standard dan mungkin dikecualikan daripada peraturan fungsi constexpr. Menggunakan intrinsik terbina dalam (cth., __builtin_cos) sebagai constexpr berpotensi dibenarkan.

Atas ialah kandungan terperinci Adakah Melayan Fungsi Perpustakaan Standard Bukan constexpr sebagai `constexpr` Mematuhi Piawaian C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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