static constexpr char m_pszFoo [] ="***FOO***"编译错误表达式没有评估常量

use*_*587 5 c++ visual-c++ visual-studio-2015

错误代码是C2131.

即使我在其他文件中调用此变量的大小,intelisense也不会抱怨,知识分子知道大小.我错过了什么让这个工作?任何帮助是极大的赞赏.在下面的图片中,看到知识产权没有抱怨,也决定了规模.

在此输入图像描述

例子啊:

class a
{
private:
static constexpr char m_pszFoo[] = "***FOO***"; // compile error on this line C2131 expression did not evaluate to a constant

public:
a() { sizeof(m_pszFoo); }; // no compile error here
};
Run Code Online (Sandbox Code Playgroud)

重现你需要做的就是在任何其他文件中包含ah.没有包含它将不会重现.

use*_*587 5

所以我想出了一个解决b \ c的错误消息,使我似乎需要在某个地方添加一个const。

static constexpr char const m_pszFoo[] = "**FOO***";
Run Code Online (Sandbox Code Playgroud)

由于某种原因,如果我们告诉编译器我们不应该将字符串指向msvc满意的char更改。

*编辑*

我有一些建议可以向Microsoft提交错误,并让他们进行调查,因为这似乎是与msvc互操作的错误。这是connect.microsoft链接:https ://connect.microsoft.com/VisualStudio/feedback/details/2781048