Share via


컴파일러 오류 C2299

업데이트: 2007년 11월

오류 메시지

'function' : 동작 변경: 명시적 특수화는 복사 생성자 또는 복사 할당 연산자가 될 수 없습니다.
'function' : behavior change: an explicit specialization can not be a copy constructor or copy assignment operator

이 오류는 Visual C++ 2005에 대해 수행된 즉, 이전 버전의 Visual C++에서는 복사 생성자나 복사 할당 연산자의 명시적 특수화를 허용할 수 있다는 컴파일러 규칙에 따라 발생할 수있습니다.

C2299를 해결하려면 복사 생성자나 할당 연산자를 템플릿 함수로 만들지 말고 클래스 형식을 사용하는 비템플릿 함수로 만들어야 합니다. 템플릿 인수를 지정하여 복사 생성자나 할당 연산자를 명시적으로 호출하는 모든 코드에서 템플릿 인수를 제거해야 합니다.

자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항를 참조하십시오.

다음 샘플에서는 C2299 경고가 발생하는 경우를 보여 줍니다.

// C2299.cpp
// compile with: /c
class C {
   template <class T>
   C (T t);

   template <> C (const C&);   // C2299
   C (const C&);   // OK
};