Rumah >pembangunan bahagian belakang >C++ >Adakah Layanan Constexpr GCC terhadap Fungsi Perpustakaan Standard Bukan Constexpr adalah Sambungan yang Mematuhi?
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!