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中仍然存在。