Maison > Article > développement back-end > Les fonctions membres peuvent-elles être partiellement spécialisées dans les modèles de classe ?
Spécialisation des fonctions de membre dans les modèles de classe
La spécialisation partielle, permettant la modification de membres spécifiques dans une classe de modèle, n'est pas prise en charge pour les membres fonctions. Cela signifie qu'un code comme celui-ci ne sera pas compilé :
<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>
Approches alternatives
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!