컴파일 타임의 주요 변경 사항 요약
업데이트: 2007년 11월
이 항목에서는 Visual C++ 2003 이전에는 오류나 경고 없이 컴파일되었던 코드로 인해 발생하는 컴파일 타임 오류 및 경고를 요약하여 설명합니다. Visual C++ 2005에는 규칙 준수와 관련된 일부 컴파일 타임 주요 변경 사항도 있습니다.
이제 정의된 전처리기 지시문에 닫는 괄호가 필요합니다(C2004).
누락된 typename 키워드와 명시적 특수화로 인해 더 이상 기본 템플릿에서 템플릿 매개 변수가 검색되지 않습니다(C2146).
보호된 멤버 n은 n이 멤버로 포함된 클래스 A에서 상속하는 클래스 B의 멤버 함수를 통해서만 액세스될 수 있습니다(C2247).
컴파일러의 향상된 내게 필요한 옵션 확인으로 인해 이제 액세스할 수 없는 기본 클래스가 검색됩니다(C2247).
명시적 특수화는 복사 생성자 또는 복사 할당 연산자가 될 수 없습니다(C2299).
소멸자 및/또는 복사 생성자에 액세스할 수 없는 경우 예외를 catch할 수 없습니다(C2316).
함수에 대한 포인터에 기본 인수를 더 이상 사용할 수 없습니다(C2383).
정적 데이터 멤버는 파생 클래스를 통해 초기화할 수 없습니다(C2477).
표준에 따라 typedef 초기화가 허용되지 않으므로 이제 컴파일러 오류가 생성됩니다(C2513).
bool은 이제 적절한 형식입니다(C2632).
UDC는 이제 오버로드된 연산자에서 모호성을 초래할 수 있습니다(C2666).
한정 변환과 동일 변환이 같지 않습니다(C2666).
이제 더 많은 식이 유효한 null 포인터 상수로 간주됩니다(C2668).
이전에는 컴파일러가 유추했던 부분에 이제 template<>이 필요합니다(C2768).
함수가 템플릿 클래스 특수화를 통해 이미 명시적으로 특수화되어 있는 경우 클래스 외부의 멤버 함수에 대한 명시적 특수화가 유효하지 않습니다(C2910).
모든 명시적 특수화에 대해 기본 템플릿의 매개 변수와 일치하도록 모든 명시적 특수화의 매개 변수를 선택해야 합니다(C2912).
부동 소수점 비형식 템플릿 매개 변수가 더 이상 허용되지 않습니다(C2993).
클래스 템플릿을 템플릿 형식 인수로 사용할 수 없습니다(C3206).
friend 함수 이름이 더 이상 포함하는 네임스페이스에 정의되지 않습니다(C3767).
멤버 포인터 규칙이 향상되었습니다(C3867).
컴파일러가 더 이상 매크로에 추가 쉼표를 허용하지 않습니다(C4002).
() 형식의 이니셜라이저로 구성된 POD 형식의 개체는 기본값으로 초기화됩니다(C4345).
종속 이름을 형식으로 처리하려면 이제 typename을 사용해야 합니다(C4346).
템플릿 특수화로 잘못 인식되었던 함수가 더 이상 템플릿 특수화로 인식되지 않습니다(C4347).
정적 데이터 멤버를 파생 클래스를 통해 초기화할 수 없습니다(C4356).
반환 형식에 사용되기 전에 클래스 템플릿 특수화를 정의해야 합니다(C4686).
컴파일러가 이제 접근할 수 없는 코드를 보고합니다(C4702).
새 비템플릿 함수를 선언하는 friend 선언을 정의해야 합니다(LNK2019).