Adakah Rawatan Lanjutan terhadap Fungsi Perpustakaan Bukan Konstexpr Mematuhi?
Keupayaan GCC untuk merawat fungsi perpustakaan bukan konstexpr standard sebagai constexpr dalam situasi tertentu menimbulkan persoalan berkenaan pematuhan.
Percanggahan dalam Piawaian
Dalam draf piawai C 11, nampaknya menganggap fungsi terbina dalam sebagai constexpr akan dibenarkan secara jelas. Walau bagaimanapun, konsensus beralih dalam C 12, dan cadangan itu berubah, menyebabkan C 14 secara jelas melarang kelakuan ini.
As-If Rule
Dalam C 11, ia tidak jelas sama ada peraturan seolah-olah membenarkan tingkah laku ini. Sesetengah pendapat mencadangkan bahawa ia mungkin, tetapi tafsiran ini tidak disahkan dalam penyelesaian isu LWG 2013, yang memperkatakan topik khusus ini.
Pelaksanaan GCC
GCC dilaksanakan tingkah laku ini berdasarkan cadangan resolusi awal LWG 2013, yang membenarkan rawatan tersirat sebagai fungsi constexpr. Walau bagaimanapun, resolusi akhir telah berubah dan sambungan ini kini tidak mematuhi C 14.
Pematuhan dalam Mod Tegas
Untuk mematuhi piawaian C 14, GCC harus mengeluarkan amaran dalam mod pematuhan ketat (-std=c 11 -pedantic atau -std=c 14 -pedantic) apabila menghadapi fungsi perpustakaan bukan constexpr yang digunakan dalam konteks constexpr. Sebagai alternatif, tingkah laku ini harus dilumpuhkan dalam mod ini.
Pengecualian Intrinsik
Intrinsik pengkompil tidak dilindungi oleh standard, dan oleh itu, ia mungkin dilayan secara berbeza. Berkemungkinan menggunakan intrinsik pengkompil dalam konteks constexpr masih boleh diterima.
Atas ialah kandungan terperinci Adakah Layanan Lanjutan GCC terhadap Fungsi Perpustakaan Standard Non-constexpr dalam Konteks Constexpr Menepati Piawaian C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!