【发布时间】:2017-08-13 08:30:33
【问题描述】:
我想使用 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,但你可以假设我没有编译器限制。
【问题讨论】:
-
hana::for_each -
@JasonRice 我怎么无法在 hana 文档中找到它...感谢您的评论!但是问这个仍然是个好主意,因为我最终得到了一个更好的解决方案(我认为)。
标签: c++ metaprogramming boost-hana