Mengapakah Invokasi Fungsi Ahli Templat Dalam Fungsi Templat Gagal dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-02 02:57:30
asal
989 orang telah melayarinya

Why Does Template Member Function Invocation Within a Template Function Fail in C  ?

Invokasi Fungsi Ahli Templat dalam Fungsi Templat

Dalam kod yang diberikan, percubaan untuk menggunakan fungsi ahli templat f dalam fungsi templat g gagal dengan ralat penyusunan:

<code class="cpp">template<class X> struct A {
   template<int I> void f() {}
};

template<class T> void g()
{
   A<T> a;
   a.f<3>();  // Compilation fails here (Line 18)
}</code>
Salin selepas log masuk

Menurut Piawaian C (14.2/4), apabila pengkhususan templat ahli dipanggil selepas ., kata kunci templat mesti dinyatakan secara eksplisit untuk membezakannya daripada bukan- fungsi ahli templat.

Untuk menyelesaikan ralat penyusunan, kod hendaklah diubah suai seperti berikut:

<code class="cpp">template<class T> void g()
{
   A<T> a;
   a.template f<3>();  // add `template` keyword here
}</code>
Salin selepas log masuk

Dengan menambah kata kunci templat, pengkompil mengiktiraf bahawa fungsi yang digunakan ialah templat ahli pengkhususan, menyelesaikan kekaburan dan membenarkan kod untuk disusun dengan jayanya.

Atas ialah kandungan terperinci Mengapakah Invokasi Fungsi Ahli Templat Dalam Fungsi Templat Gagal dalam C ?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan