Rumah >pembangunan bahagian belakang >C++ >Adakah Layanan Constexpr GCC terhadap Fungsi Perpustakaan Standard Bukan Constexpr adalah Sambungan yang Mematuhi?

Adakah Layanan Constexpr GCC terhadap Fungsi Perpustakaan Standard Bukan Constexpr adalah Sambungan yang Mematuhi?

Susan Sarandon
Susan Sarandonasal
2024-11-30 01:49:09836semak imbas

Is GCC's Constexpr Treatment of Non-Constexpr Standard Library Functions a Conforming Extension?

Adakah Melayan Fungsi Perpustakaan Standard Bukan Constexpr sebagai Constexpr Sambungan Pengkompil yang Mematuhi?

Piawaian C semasa mewajibkan fungsi perpustakaan standard diisytiharkan sebagai constexpr hanya apabila diperlukan secara eksplisit. Walau bagaimanapun, draf terdahulu mencadangkan sebaliknya.

C 11 dan Draf Standard

Semasa pembangunan C 11, satu cadangan yang bertujuan untuk secara eksplisit membenarkan memperlakukan fungsi perpustakaan bukan konstexpr standard sebagai konstexpr. Keputusan GCC untuk menyokong ciri ini dalam mod pematuhan yang ketat adalah berdasarkan draf ini.

Menukar Konsensus dalam C 14

Walau bagaimanapun, konsensus beralih semasa pembangunan C 14. Cadangan itu telah dipinda dan piawaian terakhir menyatakan bahawa pelaksanaan dilarang daripada mengisytiharkan sebarang constexpr fungsi perpustakaan standard melainkan diperlukan secara eksplisit.

Perubahan ini berpunca daripada kebimbangan tentang tingkah laku yang berbeza merentas pelaksanaan, kerana SFINAE boleh memanfaatkan ini untuk menghasilkan berbeza keputusan untuk kod yang sama.

Pematuhan untuk GCC

Pelaksanaan semasa GCC untuk kes ini adalah lanjutan yang tidak mematuhi, kerana ia melanggar piawaian C 14. Untuk mencapai pematuhan, GCC perlu mengeluarkan amaran atau melumpuhkan ciri ini dalam mod pematuhan ketat.

Intrinsik

Intrinsik pengkompil, tidak seperti fungsi perpustakaan standard, dikecualikan daripada ini peraturan kerana ia tidak dilindungi oleh piawaian. Oleh itu, menganggap intrinsik sebagai constexpr secara amnya dibenarkan.

Atas ialah kandungan terperinci Adakah Layanan Constexpr GCC terhadap Fungsi Perpustakaan Standard Bukan Constexpr adalah Sambungan yang Mematuhi?. 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