c++ - 如何方便地初始化函数指针数组?
问题描述
template<int I>;
void f(int value) { }
constexpr std::array<void(*)(int), 100> f_pointers = { &f<0>, &f<1>, &f<2>, ... &f<99> };
我们如何填写 f_pointers 0 ... 99 而无需全部输入?期待答案涉及std::integer_sequence
拆包,但阅读包扩展并不能说明如何以这种方式扩展。使用 C++20 工作。
解决方案
#include <array>
#include <utility>
template<int N>
void f(){}
template<int... Indices>
constexpr auto create_functions(std::integer_sequence<int, Indices...>)
{
return std::array {f<Indices>...};
}
constexpr auto arr = create_functions(std::make_integer_sequence<int, 100>{});
int main()
{
return 0;
}
推荐阅读
- java - javax.validation.constraints 不适用于发布请求
- c++ - 以下两个字符串案例有什么区别
- events - 为什么除了 += 和 -= 接口不能对它们的事件做任何事情?
- prometheus - 如何在 Alertmanager 触发的所有警报中添加环境作为前缀
- python-3.x - 使用 Python 在 Airflow 中动态获取值
- c# - radzen 服务中的控制器不会触发
- ios - SwiftUI 中的动画文本循环
- c# - 周长为 n 的三角形
- javascript - 如何访问来自两个网络摄像头的视频?
- javascript - 如何显示 html 内容 - nextjs