次の方法で共有


コンパイラ エラー C3772

"name" : 無効なフレンド テンプレートの宣言

クラス テンプレートの特殊化のフレンドを宣言することは無効です。 クラス テンプレートの明示的または部分的な特殊化を宣言し、同じステートメントでその特殊化のフレンドを宣言することはできません。 name プレースホルダーは、無効な宣言を識別します。

このエラーを解決するには

  • クラス テンプレートの特殊化のフレンドを宣言しません。

  • アプリケーションに適切な場合は、クラス テンプレートのフレンドを宣言するか、特定の部分的または明示的な特殊化のフレンドを宣言します。

次のコード例は、クラス テンプレートの部分的特殊化のフレンドを宣言しているため、失敗します。

// c3772.cpp
// compile with: /c

// A class template.
    template<class T> class A {};

// A partial specialization of the class template.
    template<class T> class A<T*> {};

// An explicit specialization.
    template<> class A<char>;

class X {
// Invalid declaration of a friend of a partial specialization.
    template<class T> friend class A<T*>; // C3772

// Instead, if it is appropriate for your application, declare a
// friend of the class template. Consequently, all specializations
// of the class template are friends:
//    template<class T> friend class A;
// Or declare a friend of a particular partial specialization:
//    friend class A<int*>;
// Or declare a friend of a particular explicit specialization:
//    friend class A<char>;
};

関連項目

テンプレート
クラス テンプレートの部分的特殊化