Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Menggunakan Templat Fungsi Ahli daripada Fungsi Templat Memerlukan Kata Kunci `template`?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-03 15:58:02429semak imbas

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>

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!

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