クラス テンプレートのメンバー関数の特殊化
テンプレート クラス内の特定のメンバーの変更を可能にする部分的な特殊化は、メンバーではサポートされていません機能。これは、次のようなコードはコンパイルされないことを意味します:
<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 中国語 Web サイトの他の関連記事を参照してください。