컴파일러 오류 C2910
'function': 명시적으로 특수화할 수 없습니다.
컴파일러가 함수를 두 번 명시적으로 특수화하려는 시도를 감지했습니다.
다음 샘플에서는 C2910을 생성합니다.
// C2910.cpp
// compile with: /c
template <class T>
struct S;
template <> struct S<int> { void f() {} };
template <> void S<int>::f() {} // C2910 delete this specialization
템플릿이 아닌 멤버를 명시적으로 특수화하려는 경우에도 C2910을 생성할 수 있습니다. 즉, 함수 템플릿만 명시적으로 특수화할 수 있습니다.
다음 샘플에서는 C2910을 생성합니다.
// C2910b.cpp
// compile with: /c
template <class T> struct A {
A(T* p);
};
template <> struct A<void> {
A(void* p);
};
template <class T>
inline A<T>::A(T* p) {}
template <> A<void>::A(void* p){} // C2910
// try the following line instead
// A<void>::A(void* p){}
이 오류는 Visual Studio .NET 2003에서 수행된 컴파일러 규칙 작업의 결과로 생성됩니다.
코드는 Visual Studio .NET 2003 및 Visual Studio .NET 버전의 Visual C++ template <>
에서 유효합니다.
다음 샘플에서는 C2910을 생성합니다.
// C2910c.cpp
// compile with: /c
template <class T> class A {
void f();
};
template <> class A<int> {
void f();
};
template <> void A<int>::f() {} // C2910
// try the following line instead
// void A<int>::f(){} // OK
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기