Я пытаюсь сгенерировать функции во время компиляции, используя boost hana. Вот код, который я написал
#include <boost/hana/transform.hpp>
#include <array>
template<int i>
double f(double x)
{
return x * i;
}
int main()
{
constexpr std::array arr = {1,5,10,100,500};
constexpr auto functions = hana::transform(arr,
[](const int a) -> double (*)(double)
{
return f<a>;
}
);
}
при компиляции я получаю ошибку, что f не конвертируется в тип double (*) (double).
Я думаю, что проблема в том, что a не является constexpr (что невозможно, поскольку это аргумент функции). Есть ли способ заставить это работать?