我有这段代码:
template< char... chars >
struct VariadicTemplate
{};
int
main()
{
VariadicTemplate< "abc"[ 0 ], "abc"[ 1 ], "abc"[ 2 ] > v;
}
使用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
如果没有,这是编译错误吗?
答案 0 :(得分:4)
从C ++ 03到C ++ 11的行为变化可以位于 5.19常量表达式(两个标准的相同子句)中。因此,我怀疑它会被 constexpr no / partial所覆盖。
请注意,作为 constexpr 功能{@ 3}}的参考文件,是引入5.19更改的地方:
4.5.3修订了常量表达式
段落修改。用[...]
替换5.19节