Penyebaran Eksplisit Fungsi Templat
Dalam C , fungsi templat menyediakan cara untuk mentakrifkan operasi yang boleh beroperasi pada jenis yang berbeza. Kadangkala, fungsi templat perlu dibuat secara eksplisit tanpa memanggilnya secara langsung. Ini boleh berguna dalam situasi di mana pengkompil tidak boleh membuat kesimpulan secara automatik argumen templat.
Pertimbangkan contoh berikut:
template <class T> int function_name(T a);
Untuk menyatakan secara eksplisit fungsi ini untuk integer, seseorang mungkin cuba menulis:
template int function_name<int>(int);
Walau bagaimanapun, pendekatan ini menghasilkan perkara berikut ralat:
error: expected primary-expression before 'template' error: expected `;' before 'template'
Untuk membuat seketika fungsi dengan betul, gunakan sintaks berikut:
template <typename T> void func(T param); // definition template void func<int>(int); // explicit instantiation
Adalah penting untuk ambil perhatian bahawa kod ini melaksanakan instantiasi eksplisit, bukan pengkhususan. Sintaks untuk pengkhususan berbeza sedikit:
template <typename T> void func(T param); // definition template <> void func<int>(int); // specialization
Instasiasi eksplisit memastikan bahawa kod untuk fungsi templat instantiated dijana oleh pengkompil, menjadikannya tersedia untuk digunakan tanpa perlu memanggil terus fungsi templat dengan yang sesuai taip hujah.
Atas ialah kandungan terperinci Bagaimana untuk Menjelaskan Fungsi Templat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!