【发布时间】:2015-03-09 11:34:29
【问题描述】:
Visual C++ 2010 是否支持可变参数模板?
Here 声明:
Visual C++ 2010 不支持可变参数模板。
但是this forum entry 说:
是的,VS2010 TR1 支持可变长度模板参数。
还有 an example on MSDN 被明确列为 Visual C++ 2010。但是,当我尝试使用 Visual C++ 2010 构建它时,在“...”上出现语法错误 C2059:
template<class T1, class T2, ..., class TN>
class tuple { /* ... */ };
我错过了什么?除了 C++11 支持之外,我还需要打开一些编译器选项吗?
【问题讨论】:
-
上面的 MSDN 示例代码不是可变参数模板。那里的
...表示typename的“任意多,但预先确定”的序列。 C++11 可变参数模板声明类似于template <typename First, typename... Rest>,其中可变参数类型参数只能作为last 模板参数出现一次。虽然我没有使用过 VS2010 支持,但我无法具体评论它。 -
我需要打开一些编译器选项吗?嗯,可变参数模板从 c++11 开始可用,所以你必须使用它进行编译
-
@Saran 我明白了。感谢您的澄清。这意味着论坛条目是错误的。有没有办法“绕过”不允许使用可变长度模板的限制?
-
@1nflktd 是的,当然,我忘了说我当然已经在这样做了。
-
@theV0ID 这是一个有效的 C++11 可变参数模板代码的快速示例。看VS2010喜不喜欢:coliru.stacked-crooked.com/a/44dd192a0b8a9516
标签: c++ c++11 visual-c++ variadic-templates