C++ 在Visual Studio中,索引字符串文字不被视为常量

C++ 在Visual Studio中,索引字符串文字不被视为常量,c++,visual-studio-2010,visual-c++,g++,C++,Visual Studio 2010,Visual C++,G++,我试图理解为什么以下代码是在g++中编译的,而不是在VisualStudio2010(visual c++)中编译的 Visual studio抱怨出现错误13错误C2057:预期的常量表达式,但g++4.8.3似乎没有任何问题。字符串文字不是有效的常量字符数组吗?如果是这样,为什么对于代码< > FistSave< /Cuff>和第二次Value//C> > /P>使用Visual C++ 19编译(AKA 2015),这将不会在VS2013中编译,同样的错误Visual Studio 201

我试图理解为什么以下代码是在g++中编译的,而不是在VisualStudio2010(visual c++)中编译的


Visual studio抱怨出现
错误13错误C2057:预期的常量表达式
,但g++4.8.3似乎没有任何问题。字符串文字不是有效的常量字符数组吗?如果是这样,为什么对于代码< > FistSave< /Cuff>和<代码>第二次Value//C> > /P>使用Visual C++ 19编译(AKA 2015),这将不会在VS2013中编译,同样的错误Visual Studio 2010也会做很多傻事。尝试在不同的位周围添加括号,看看是否有帮助。这是可能的。VS2010中对c++11的支持非常糟糕。这在c++11中是一个常量表达式,但在c++03中不是。。。考虑到前两条注释,直到最近他们才实现C++11的这一部分。
int main(int argc, char **argv)
{
    const char aChar = 5;
    enum 
    {
        firstVal = 1 & aChar,
        secondVal = 1 & "WOW"[0]
    }; 
}