【发布时间】:2012-03-22 20:38:37
【问题描述】:
我有这段代码,它会产生标题中显示的错误消息:
#include <iostream>
template <int FIRST, int... NEXT>
struct Test {
static const int VALUE = FIRST + Test<NEXT...>::VALUE;
};
template <int FIRST>
struct Test<FIRST> {
static const int VALUE = FIRST;
};
int main() {
std::cout << Test<1, 2, 3>::VALUE << std::endl; // print "6"
return 0;
}
是否有任何简单的解决方法可以让它在 GCC 中编译而不改变它的功能?
【问题讨论】:
-
我看到了那个答案,但我不太明白(所有这些不同的类有什么用,它们与原始问题有什么关系,以及为什么当代码在原来的问题没有?)。
-
它是重复的原因是因为您收到错误的原因与另一个问题相同:您的 GCC 版本没有实现对 varadic 模板的这种使用。您必须更新它或不使用可变参数模板。
-
@Nicol:您仍然可以很好地使用可变参数模板,您只需要解决它并使用部分专业化。
标签: c++ templates c++11 metaprogramming variadic-templates