Member-Funktionsspezialisierung in Klassenvorlagen
Eine teilweise Spezialisierung, die die Änderung bestimmter Mitglieder in einer Vorlagenklasse ermöglicht, wird für Mitglieder nicht unterstützt Funktionen. Dies bedeutet, dass Code wie der folgende nicht kompiliert werden kann:
<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>
Alternative Ansätze
<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>
Das obige ist der detaillierte Inhalt vonKönnen Mitgliedsfunktionen teilweise auf Klassenvorlagen spezialisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!