从最基本的意义上说,我想这样做:
template<typename ... Args>
struct{
typedef std::tuple<Args ..., int> myTuple;
}
但MSVC(在VisualStudio 2013中)给了我一个奇怪的语法错误:
error C2143: syntax error : missing ';' before 'int'
是否可以在解压缩列表后使用常规typename作为模板参数?如果有,怎么样?如果不是,为什么不呢?
答案 0 :(得分:3)
是否可以在解压缩列表后使用常规类型名称 模板参数?
是的,绝对的。您可以在参数列表中的包扩展之前和之后插入参数,并且完全按照您显示的方式完成。这只是另一个例子,说明VC ++(或者在这种情况下,它的错误信息)在模板和最近引入功能方面是多么无用。
通过试验在线编译器,我发现问题是结构定义后缺少的分号。由于某种原因,VC ++产生的编译器错误是指元组而不是结构的结尾。所以,检查是否缺少分号。