다음을 통해 공유


컴파일러 오류 C3772

'name': friend 템플릿 선언이 잘못되었습니다.

클래스 템플릿 특수화의 friend를 선언하는 것은 유효하지 않습니다. 클래스 템플릿의 명시적 또는 부분 특수화를 선언하고 동일한 문에서 해당 특수화의 friend를 선언할 수는 없습니다. name 자리 표시자는 잘못된 선언을 식별합니다.

이 오류를 해결하려면

  • 클래스 템플릿 특수화의 friend를 선언하지 마세요.

  • 애플리케이션에 해당하는 경우 클래스 템플릿의 friend를 선언하거나 특정 부분 또는 명시적 특수화의 friend를 선언합니다.

예시

다음 코드 예제는 클래스 템플릿 부분 특수화의 friend를 선언하므로 실패합니다.

// 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>;
};

참고 항목

템플릿
템플릿 특수화