Rumah >pembangunan bahagian belakang >C++ >Parameter Templat Templat: Apakah Perbezaan Antara Templat dan Parameter Templat?
Metaprogramming Templat: Parameter Templat Templat
Parameter templat templat ialah ciri berkuasa dalam C , membenarkan templat merujuk kepada templat lain. Walau bagaimanapun, sintaks mereka boleh mengelirukan, membawa kepada salah tanggapan.
Senario
Pertimbangkan kod berikut:
<code class="cpp">template<class T> class B {}; // A templated class template<template<class X> class Z = B> // The problem is in this line class BB{};</code>
Baris yang dimaksudkan ialah :
<code class="cpp">template<class X> class Z = B</code>
Salah tanggapan
Satu tanggapan salah biasa ialah C boleh mentafsirkan Z sebagai kelas templat lain dan bukannya parameter templat.
Penjelasan
C membezakan antara kelas templat dan parameter templat mengikut peletakannya. Dalam kod di atas, sintaks:
<code class="cpp">template<template<class X> class Z = B></code>
menunjukkan bahawa Z ialah parameter templat yang mengharapkan templat dengan parameter jenis tunggal X. Tanda sama (=) menetapkan templat kelas B sebagai nilai lalai untuk Z.
Analogi kepada Penunjuk Fungsi
Parameter templat templat adalah serupa dengan penunjuk fungsi yang menerima hujah fungsi. Sama seperti penunjuk fungsi menerima fungsi dengan jenis hujah yang ditentukan, parameter templat templat menerima templat dengan parameter jenis yang ditentukan.
Penggunaan
Parameter templat templat berguna untuk mencipta kod yang sangat generik . Ia membenarkan anda memanipulasi templat sebagai parameter dan mencipta struktur templat yang kompleks.
Sebagai contoh, adalah mungkin untuk mencipta parameter templat templat yang mengambil parameter templat templat lain. Walau bagaimanapun, ini bukan sebahagian daripada standard C.
Nota
Ingat bahawa templat templat bukan sintaks C yang sah. Contoh yang diberikan di atas hanyalah ilustrasi hipotesis konsep.
Atas ialah kandungan terperinci Parameter Templat Templat: Apakah Perbezaan Antara Templat dan Parameter Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!