Rumah > pembangunan bahagian belakang > C++ > Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit Templat Fungsi Ahli Dalam Kelas?

Mengapa GCC Gagal Mengumpul Pengkhususan Eksplisit Templat Fungsi Ahli Dalam Kelas?

DDD
Lepaskan: 2024-11-24 12:52:43
asal
445 orang telah melayarinya

Why Does GCC Fail to Compile Explicit Specializations of Member Function Templates Within a Class?

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*)
    {
    }
};
Salin selepas log masuk

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:

  1. Buat laporan pepijat di https://gcc.gnus.org/bugzilla/index.cgi.
  2. Tetapkan komponen "C " dan versi GCC yang sesuai (cth., "8").
  3. Berikan penerangan tentang isu tersebut, termasuk mesej ralat yang anda terima dan jangkaan tingkah laku.
  4. Lampirkan coretan kod yang boleh dihasilkan semula minimum (cth., kod yang anda berikan) pada laporan.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan