Я хотел бы сделать что-то вроде этого (внутри класса):
static constexpr MyStruct ops[6] = {
{'+', [&] (double a, double b) { return a+b; } },
{'-', [&] (double a, double b) { return a-b; } },
...
};
Где MyStruct
определяется как:
typedef double (*binOp)(double, double);
struct MyStruct {
char c;
binOp fn;
};
Я также пробовал:
std::function <double(double,double)> fn;
для определения fn
, но не повезло.
Ошибка, которую я получаю для первого случая, это "ошибка: инициализатор поля не является константой", которую я действительно не получаю. Если я попытаюсь с std::function
, это ухудшится, так как он говорит: "не может быть инициализирован непостоянным выражением при объявлении".
Почему лямбда-функция непостоянна? Я что-то пропустил?