我想做这样的事情(在课堂上):
static constexpr MyStruct ops[6] = {
{'+', [&] (double a, double b) { return a+b; } },
{'-', [&] (double a, double b) { return a-b; } },
...
};
Run Code Online (Sandbox Code Playgroud)
在哪里MyStruct
定义为:
typedef double (*binOp)(double, double);
struct MyStruct {
char c;
binOp fn;
};
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
std::function <double(double,double)> fn;
Run Code Online (Sandbox Code Playgroud)
对于定义fn
,但没有运气.
我得到的第一种情况的错误是"错误:字段初始化程序不是常量",我真的没有.如果我尝试std::function
它会变得更糟,因为它说:"在声明时不能通过非常量表达式初始化".
为什么lambda函数不是常数?我错过了什么吗?