Pengkhususan Fungsi Ahli dalam Templat Kelas
Pengkhususan separa, membenarkan pengubahsuaian ahli tertentu dalam kelas templat, tidak disokong untuk ahli fungsi. Ini bermakna kod seperti berikut tidak akan disusun:
<code class="cpp">template <typename T, bool B> struct X { void Specialized(); }; template <typename T> void X<T, true>::Specialized() { ... } template <typename T> void X<T, false>::Specialized() { ... }</code>
Pendekatan Alternatif
<code class="cpp">template <> void X<int, true>::Specialized() { ... }</code>
<code class="cpp">template <typename T, bool B> struct X { template <bool B> static void Specialized(int); }; template <typename T> inline void X<T, true>::Specialized(int) { ... } template <typename T> inline void X<T, false>::Specialized(int) { ... }</code>
<code class="cpp">template <typename T, bool B> struct SpecializedImpl { static void call() { ... } }; template <typename T, bool B> struct X { void Specialized() { SpecializedImpl<T, B>::call(); } };</code>
Atas ialah kandungan terperinci Bolehkah Fungsi Ahli Dikhususkan Separa dalam Templat Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!