C++ ';警告C4709:数组索引表达式中的逗号运算符';-但是任何地方都看不到逗号!
以以下代码为例:C++ ';警告C4709:数组索引表达式中的逗号运算符';-但是任何地方都看不到逗号!,c++,visual-studio,warnings,C++,Visual Studio,Warnings,以以下代码为例: struct Test{ operator int() const{ return 0; } }; Test test(){ return Test(); } int main(){ int arr[10]; arr[test()] = 5; } 在Visual Studio 2010下使用/W4编译将生成。有趣的是,如果我只添加一个简单的默认构造函数,警告就会突然消失。而且,它只在该星座中起作用。如果删除函数调用或
struct Test{
operator int() const{
return 0;
}
};
Test test(){
return Test();
}
int main(){
int arr[10];
arr[test()] = 5;
}
在Visual Studio 2010下使用/W4
编译将生成。有趣的是,如果我只添加一个简单的默认构造函数,警告就会突然消失。而且,它只在该星座中起作用。如果删除函数调用或不返回用户定义的类型,警告将消失。而且,正如预期的那样,GCC不会产生这样的警告
所以,我可以将上述代码中的警告视为VisualStudio中的一个bug吗?或者,它是否有比看起来更多的地方?至少可以说,这是非常令人惊讶的
编辑:创建了一个。肯定是一个错误-误导性警告 我可以在VC++2008上重现这种行为。虽然说实话,到目前为止,我从未在VC++中遇到过这种行为,因为我总是为我的类定义构造函数。@在硅片中:重新标记到
visual studio
then.:)已在MS Connect上创建错误报告,请参阅编辑。此错误在VS2013中仍然存在。