Templat Fungsi: Pengkhususan Separa lwn. Lebih Muatan
Dalam C , pengkhususan separa templat fungsi tidak dibenarkan oleh standard bahasa. Walau bagaimanapun, penyusun tertentu mungkin menyediakan sambungan yang membenarkannya.
Pengkhususan Separa Ditakrifkan
Pengkhususan separa melibatkan penentuan templat dengan set hujah templat yang lebih khusus daripada templat asal . Untuk templat kelas, ini membayangkan menentukan nilai khusus untuk beberapa atau semua parameter templat.
Contoh: Pengkhususan Separa dan Lebih Muatan
Kod yang disediakan menunjukkan lebihan muatan, bukan separa. pengkhususan. Fungsi berikut ditakrifkan:
template<typename T1, typename T2> inline T1 max(T1 const& a, T2 const& b) { return a < b ? b : a; } template<typename T> inline T const& max(T const& a, T const& b) { return 10; }
Walaupun parameter templat fungsi kedua adalah sama dari segi jenis, ia bukan pengkhususan separa. Ia adalah fungsi berasingan yang melebihkan fungsi pertama.
Pengkhususan Templat Fungsi
Pengkhususan penuh templat fungsi, sebaliknya, dibenarkan. Ia melibatkan penentuan templat dengan semua parameter templat dinyatakan dengan jelas. Walau bagaimanapun, ia tidak disokong secara langsung oleh standard C dan hanya dilaksanakan dalam beberapa penyusun sebagai lanjutan.
Sambungan Pengkompil Pengkhususan Separa
Dalam Microsoft Visual Studio 2010 Express , sambungan pengkompil membenarkan pengkhususan separa untuk kedua-dua kelas dan templat fungsi. Ini bukan tingkah laku standard dan boleh mengakibatkan isu mudah alih.
Atas ialah kandungan terperinci Templat Fungsi C: Berlebihan lwn. Pengkhususan Separa (Bukan Standard)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!