Я хочу использовать 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::transform
, но для недействительной лямбды.
Я не ожидал, что мне будет трудно найти, как это сделать с Hana
, должен ли я просто использовать специализацию, как в старые времена?
Кстати, прямо сейчас я использую gcc 7.1, но вы можете работать с предположением, что у меня нет ограничений компилятора.