部分テンプレート特殊化での「不完全な型の無効な使用」エラー
次の構文でテンプレート関数の部分特殊化を作成しようとしたとき:
template <typename T> void foo<int, T>::bar() { }
「無効な使用法です」というエラーが表示される場合があります。不完全な型 'struct foo
これを解決するには、クラスを部分的に特殊化するときに完全なテンプレート署名を指定します。
template <typename S, typename T> struct foo { void bar(); }; template <> struct foo<int, T> { void bar() { } };
または、次のようにします。ネストされたテンプレート構造体を作成するか、部分的に異なるテンプレートから派生するなどの回避策を使用できます。
注: これは、メンバー関数の部分的な特殊化にのみ適用されます。テンプレート関数を完全に特殊化するには、テンプレート全体を特殊化する必要はありません。
以上がテンプレート関数メンバーの部分特殊化により「不完全な型の無効な使用」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。