编译器将接受解析为相同实际类型的多个模板专用化,尽管附加定义永远不可用也是如此。 编译器现在可检测这些多个定义。
__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) {}