我想使用 boost hana 来生成这个最终代码:
template < typename ... Ts >
void foo(Ts ... data) {
constexpr auto tuple = hana::make_tuple(data...);
//Code that I need to be generate
container_c[tuple[0_c]].foo2();
container_c[tuple[1_c]].foo2();
container_c[tuple[2_c]].foo2();
}
container_c 是在编译时生成的地图,不过我认为这并不重要。foo2 不是 constexpr。
我正在考虑使用hana::size(tuple).times
,但我需要一个增量,可能正在使用hana::make_range(hana::size_c<0>, hana::size(tuple))
,但我不知道该怎么做。
我希望找到一个函数,它可以让我在 hana 中的元组的每个成员上执行一个函数。类似的东西,hana::transform
但对于 void lambda。
我没想到很难找到如何使用Hana
,我应该像过去那样使用专业吗?
顺便说一句,我现在使用的是 gcc 7.1,但你可以假设我没有编译器限制。