C++11 非类型模板参数捆绑扩展

标签 c++ c++11 g++4.8

在使用 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/

相关文章:

c++ - 基于模板参数值的类型

c++ - Stroustrup : For C++, 如何安装 FLTK 库?

c++ primer Binary Search 通过迭代器

c++ - 在 C++11 中生成一个随机字符串?

c++ - 不能用大括号传递两次指针

c - 为什么 getopt_long 会忽略一些命令行选项

C++:奇怪的 "is private"错误

c++ - QPair迭代的QHash

c++ - 从删除了复制构造函数的类继承

c++ - 如何为 cpp 中所有语言的整个单词匹配构建正则表达式?