在使用 C++11 模板参数包时,我想出了以下代码:
#include <cstdio>
static void testFunc(int i1, int i2) {
printf("testFunc(%d, %d)\n", i1, i2);
}
template <size_t... Indices> void wrapper() {
testFunc(Indices...);
}
int main(int argc, char *argv[]) {
wrapper<1, 2>();
return 0;
}
尝试用 g++4.8.2 编译它导致了
“函数‘void testFunc(int, int)’的参数太少”
错误。
这不是有效的 C++ 还是 g++ 还没有实现这种非类型模板参数包的用法?
最佳答案
这是有效的,这似乎是 gcc 的可变参数模板实现中的一个错误。我在 gcc bugzilla page 上搜索了一下并没有找到任何有关此问题的报告。
关于C++11 非类型模板参数捆绑扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412760/