c++ - 可变参数模板中的函数参数
问题描述
是否可以编写带有函数作为模板参数的可变参数模板类?
这些是有效的 c++ 声明
template <typename ...Types> class foo;
template <int func(int)> class bar;
有没有可能做类似的事情
template <int func(int)...> class foobar;
我尝试了很多不同的语法,比如
template <int ...func(int)> class foobar;
并且什么都没有编译(我正在使用带有 -std=c++17 的 gcc 8.1.0)
解决方案
语法是:
template <int (*...Fs)(int)> class foobar {};
这使得
int f1(int);
int f2(int);
foobar<&f1, &f2, &f1> obj;
使用别名可能会帮助您拥有更自然的语法:
using f_int_int = int (*)(int);
template <f_int_int...Fs> class foobar {};
甚至(感谢 Yakk 的评论):
template <typename T> using id_t = T;
template <id_t<int(*)(int)>...Fs> class foobar {};
推荐阅读
- php - 如果使用时区时包含时间,则日期返回不同的值
- arrays - 如何找到最后一个数组的键
- angular - 有没有一种简单的方法来覆盖基本指令?
- strapi - Strapi API 调用错误:{"statusCode":403,"error":"Forbidden","message":"Forbidden"}
- c - 在以太网数据包中找到的 MAC 地址与 TCP/IP 数据包有何关系?
- bash - 如何通过cygwin终端提取zip文件?
- javascript - Webpack生产模式下JS错误但开发模式下没有 - 帮我找出原因
- java - 如何在android中导入特定版本的fabric
- mysql - 在 mysql 上从拉丁语转换为 UTF-8 - 具有特殊字符的密码会发生什么?
- android - RecyclerView插入动画不显示