Mengapakah Menggunakan Templat Fungsi Ahli daripada Fungsi Templat Memerlukan Kata Kunci `template`?

Linda Hamilton
Lepaskan: 2024-11-03 15:58:02
asal
474 orang telah melayarinya

Why Does Invoking a Member Function Template from a Templated Function Require the `template` Keyword?

Fungsi Ahli Invokasi Kelas Templat daripada Fungsi Templat

Dalam coretan kod yang disediakan, menggunakan templat fungsi ahli dari dalam templat lain menghasilkan ralat penyusunan. Khususnya, kod cuba memanggil A::f<3>() dari dalam g(). Walau bagaimanapun, ini gagal kerana isu sintaks.

Untuk menyelesaikan masalah ini, kata kunci templat mesti dinyatakan secara eksplisit sebelum pemanggilan fungsi ahli. Ini kerana menurut C '03 Standard 14.2/4, apabila nama pengkhususan templat ahli muncul selepas postfix-expression atau qualified-id yang bergantung pada parameter templat, nama templat ahli mesti diawali dengan kata kunci templat .

Oleh itu, kod berikut adalah betul:

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

Dengan menambahkan kata kunci templat, pengkompil boleh mengenal pasti dengan betul bahawa f ialah templat ahli templat kelas A, dan ia boleh berjaya memanggil A::f<3>().

Atas ialah kandungan terperinci Mengapakah Menggunakan Templat Fungsi Ahli daripada Fungsi Templat Memerlukan Kata Kunci `template`?. 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