컴파일러 경고(수준 3) C4686
업데이트: 2007년 11월
'user-defined type' : possible change in behavior, change in UDT return calling convention
'user-defined type' : 동작과 UDT 반환 호출 규칙이 변경되었을 수 있습니다.
정의되어 있지 않은 클래스 템플릿 특수화가 반환 형식에 사용되었습니다. 클래스를 인스턴스화하는 방법으로 C4686 경고를 해결할 수 있습니다. 인스턴스를 선언하거나 멤버(C<int>::anything)에 액세스하여 해결할 수도 있습니다.
이 경고는 ISO C++ 표준에 맞도록 Visual C++ .NET 2003 컴파일러에 이루어진 변경 사항으로 인해 발생합니다.
자세한 내용은 컴파일 타임의 주요 변경 내용 요약을 참조하십시오.
이 경고는 기본적으로 해제되어 있습니다. 자세한 내용은 기본적으로 해제되어 있는 컴파일러 경고를 참조하십시오.
대신 다음 코드를 사용해 보십시오.
// C4686.cpp
// compile with: /W3
#pragma warning (default : 4686)
template <class T>
class C;
template <class T>
C<T> f(T);
template <class T>
class C {};
int main() {
f(1); // C4686
}
template <class T>
C<T> f(T) {
return C<int>();
}