小编Dav*_*.F.的帖子

lambda函数的静态数组(C++)

我想做这样的事情(在课堂上):

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函数不是常数?我错过了什么吗?

c++ lambda c++11

10
推荐指数
1
解决办法
3694
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1