Ralat GCC: Pengkhususan Eksplisit dalam Skop Bukan Ruang Nama
Soalan:
Mengapa kod berikut gagal untuk disusun dalam GCC apabila mengkhususkan secara eksplisit templat fungsi ahli dalam a kelas?
template<typename T> struct Widget { template<typename U> void foo(U) { } template<> void foo(int*) { } };
Jawapan:
Mengikut standard C ([temp.expl.spec], perenggan 2), pengkhususan eksplisit boleh diisytiharkan dalam mana-mana skop di mana templat utama yang sepadan boleh ditakrifkan. Oleh itu, kod tersebut hendaklah dikompil dalam GCC juga.
Pepijat dan Pelaporan GCC:
Kegagalan untuk menyusun dalam GCC ini berkemungkinan besar pepijat. Untuk melaporkannya, ikuti langkah berikut:
Rujukan Standard:
Bahagian standard C [temp.expl.spec] perenggan 2 menyatakan:
Pengkhususan eksplisit boleh diisytiharkan dalam mana-mana skop di mana templat utama yang sepadan boleh ditakrifkan.
Atas ialah kandungan terperinci Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit Templat Fungsi Ahli Dalam Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!