Dalam C , bagaimanakah fungsi templat boleh digunakan sebagai hujah templat untuk mencapai penggunaan semula kod semasa mengekalkan kefungsian generik, terutamanya apabila fungsi yang terlibat itu sendiri juga adalah templat?
Untuk menangani masalah ini, gunakan parameter templat templat. Konsep utama ialah parameter templat tidak boleh secara langsung menyertakan fungsi templat templat kerana keperluan untuk instantiasi terlebih dahulu. Penyelesaian melibatkan penggunaan struktur tiruan untuk merangkum fungsi templat:
<code class="cpp">template <typename T> struct a { static void foo(T = T()) {} }; template <typename T> struct b { static void foo(T = T()) {} }; struct SomeObj {}; struct SomeOtherObj {}; template <template <typename P> class T> void function() { T<SomeObj>::foo(); T<SomeOtherObj>::foo(); } int main() { function<a>(); function<b>(); }</code>
Dalam contoh ini, struktur a dan b melaksanakan fungsi templat untuk kaedah foo. Templat fungsi mengambil parameter templat templat, membolehkan kami menghantar templat a dan b sebagai hujah. Dalam fungsi, contoh khusus struktur dummy dicipta, membolehkan penggunaan foo dengan jenis parameter yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Templat Boleh Digunakan sebagai Argumen Templat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!