编译器将接受解析为相同实际类型的多个模板专用化,尽管附加定义永远不可用也是如此。 编译器现在可检测这些多个定义。
__int32 和 int 被视为单独的类型。 编译器现在将 __int32 视为 int 的同义词。 这意味着,如果同时在 __int32 和 int 上重载函数,编译器将检测多个定义,并给出错误。
__int32
int
以下示例生成 C2084:
// C2084.cpp void Func(int); void Func(int) {} // define function void Func(int) {} // C2084 second definition 若要更正此错误,请删除重复的定义: // C2084b.cpp // compile with: /c void Func(int); void Func(int) {}
若要更正此错误,请删除重复的定义:
// C2084b.cpp // compile with: /c void Func(int); void Func(int) {}