Я пытаюсь понять, как преобразовать список целочисленных констант во время компиляции с помощью boost:hana.
У меня есть список как:
constexpr auto vals = hana::to<hana::tuple_tag>(hana::range_c<int, 0, 3>);
Я хочу применить функцию:
constexpr auto Pow2(int i) { return 1 << i; }
Однако
constexpr auto res = hana::transform(list, Pow2);
создает тип для res hana::tuple<int, int, int>
. Я не вижу, как переместить аргумент лямбда в аргумент шаблона для hana::int_c
// Compiler error: Non-type template argument is not a constant expression
constexpr auto Pow2(int i)
{
return hana::int_c<1 << i>{};
}