更新:2007 年 11 月
本主題將針對 Visual C++ 2003 之前編譯時沒有問題的程式碼,摘要列出現在編譯時期會發生的錯誤和警告。但是,某些與一致性有關的編譯時期重大變更則是在 Visual C++ 2005 中就已經加入。
現在,已定義的前置處理器指示詞 (Preprocessor Directive) 都需要使用右括號 (C2004)。
若缺少 typename 關鍵字和明確特製化,則無法再找到主要樣板的樣板參數 (C2146)。
您只能透過類別 (B) 的成員函式存取受保護成員 (n),這個類別 (B) 是繼承自類別 (A),而此受保護成員 (n) 則是其中的成員 (C2247)。
已改善編譯器中的網頁可及性檢查,現在已經可以偵測到無法存取的基底類別 (Base Class) (C2247)。
明確特製化不能是複製建構函式或複製指派運算子 (C2299)。
如果無法存取解構函式和 (或) 複製建構函式,則無法攔截例外狀況 (C2316)。
不再允許函式的指標使用預設引數 (C2383)。
無法透過衍生類別初始化靜態資料成員 (C2477)。
標準並不允許 typedef 的初始設定,因此現在會產生編譯器錯誤 (C2513)。
bool 現在是正確的型別 (C2632)。
UDC 搭配多載運算子 (Overload Operator) 現在會造成模稜兩可 (Ambiguity) (C2666)。
限定性條件轉換與自身轉換不同 (C2666)。
現在已將更多運算式視為有效的 null 指標常數 (C2668)。
對於之前編譯器會推斷 template<> 的地方,現在這些地方都必須使用它 (C2768)。
如果成員 (Member) 函式已透過樣板類別特製化進行明確特製化,則該類別外成員函式的明確特製化即為無效 (C2910)。
對於每個明確特製化,您都必須選擇每個明確特製化的參數,如此這些參數才能符合主要樣板的參數 (C2912)。
不再允許使用浮點非型別樣板參數 (C2993)。
不允許將類別樣板視為樣板型別引數 (C3206)。
friend 函式名稱已不能在其包含的命名空間中使用 (C3767)。
已提高成員指標的一致性 (C3867)。
編譯器將不再接受在巨集中使用額外逗號 (C4002)。
使用形式為 () 的初始設定式所建構之 POD 型別的物件將會使用預設值初始化 (C4345)。
現在如果要將相依名稱當成型別,則必須使用 typename (C4346)。
之前視為樣板特製化的函式已不再是如此 (C4347)。
無法透過衍生類別初始化靜態資料成員 (C4356)。
在傳回型別中使用類別樣板特製化之前,必須先定義此類別樣板特製化 (C4686)。
現在編譯器會報告不可能執行到的程式碼 (C4702)。
宣告新的非樣板函式的 friend 宣告必須加以定義 (LNK2019)。