"abc"[0]不是编译时常量

Dal*_*sky 5 c++ mingw visual-c++ c++11

我有这个代码:

template< char... chars >
struct VariadicTemplate
{};


int
main()
{
    VariadicTemplate< "abc"[ 0 ], "abc"[ 1 ], "abc"[ 2 ] >  v;
}
Run Code Online (Sandbox Code Playgroud)

这与mingw-w64 4.8.1编译良好.但是,同样不能在MSVC 2013下编译,也不能在VC++ 11月CTP编译时出错:

错误1错误C2975:'chars':'VariadicTamplate'的模板参数无效,预期的编译时常量表达式

哪个"不"或"部分"指的是这个? http://blogs.msdn.com/b/vcblog/archive/2013/12/02/c-11-14-core-language-features-in-vs-2013-and-the-nov-2013-ctp. ASPX

如果没有,这是编译器错误吗?

eca*_*mur 4

从 C++03 到 C++11 的行为变化可以在5.19 常量表达式中找到(两个标准的相同子句)。因此,我怀疑它会被constexpr no/partial 覆盖。

请注意,作为constexpr功能参考的论文n2235是引入对 5.19 的更改的地方:

4.5.3 修改常量表达式

段落修改。将第 5.19 节替换为 [...]