【发布时间】:2014-02-24 13:49:12
【问题描述】:
我有这个代码:
template< char... chars >
struct VariadicTemplate
{};
int
main()
{
VariadicTemplate< "abc"[ 0 ], "abc"[ 1 ], "abc"[ 2 ] > v;
}
这与 mingw-w64 4.8.1 编译得很好。但是,在 MSVC 2013 和 VC++ 十一月 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
如果没有,这是编译器错误吗?
【问题讨论】:
-
好奇,你知道它是否对非可变模板做同样的事情吗?
-
也许试试
VariadicTemplate<'a', 'b', 'c'> -
我认为这只是一般的
constexpr支持,已知并列为不完整。 -
好吧,c++ november CTP 声明对 constexpr 有部分支持,但成员函数除外,我认为不是这种情况
-
@DaliborFrivaldsky 它实际上说“CTP 支持 C++11 constexpr,但成员函数除外。(另一个限制是不支持数组。)”
"abc"是 @987654326 的数组@.
标签: c++ visual-c++ c++11 mingw