Rumah >pembangunan bahagian belakang >C++ >Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit dalam Skop Bukan Ruang Nama?

Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit dalam Skop Bukan Ruang Nama?

Susan Sarandon
Susan Sarandonasal
2024-11-16 05:40:03224semak imbas

Why Does GCC Fail to Compile Explicit Specialization in Non-Namespace Scope?

Pengkhususan Eksplisit dalam Skop Bukan Ruang Nama

Kod yang diberikan gagal untuk disusun dalam GCC walaupun berjaya menyusun dalam Clang. Mengikut piawaian C ([temp.expl.spec]), pengkhususan eksplisit boleh diisytiharkan dalam mana-mana skop di mana templat utama yang sepadan boleh ditakrifkan.

Tingkah laku ini kelihatan seperti pepijat dalam GCC. Menurut CWG 727, peraturan dalam [temp.expl.spec] mengenai pengkhususan eksplisit telah diubah suai untuk membenarkan pengisytiharan sedemikian dalam mana-mana skop yang berkaitan.

Skop Pengkhususan Eksplisit

Standard asal menyatakan bahawa pengkhususan eksplisit harus diisytiharkan dalam ruang nama yang melampirkan templat khusus. Walau bagaimanapun, piawaian semasa membenarkan pengkhususan eksplisit dalam mana-mana skop di mana templat utama boleh ditakrifkan:

  • Takrifan kelas (12.2)
  • Fungsi ahli (17.6.2)
  • Ruang nama sebaris (10.3.1.2)

Kegagalan GCC untuk mematuhi peraturan yang dikemas kini ini merupakan pepijat. Isu ini telah dikenal pasti sebagai Bug 85282 dan kini dijejaki oleh pasukan pembangunan GCC.

Atas ialah kandungan terperinci Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit dalam Skop Bukan Ruang Nama?. 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