類別模板中的成員函數特化
成員不支援部分特化,允許修改模板類別中的特定成員功能。這意味著類似以下的程式碼將無法編譯:
<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>
替代方法
<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>
以上是類別模板中的成員函數可以部分特化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!