我在下面的函数中有一个小的“lambda 表达式”:
int main()
{
int x = 10;
auto lambda = [=] () { return x + 3; };
}
下面是为上述 lambda 表达式生成的“匿名闭包类”。
int main()
{
int x = 10;
class __lambda_3_19
{
public: inline /*constexpr */ int operator()() const
{
return x + 3;
}
private:
int x;
public: __lambda_3_19(int _x) : x{_x}
{}
};
__lambda_3_19 lambda = __lambda_3_19{x};
}
编译器生成的闭包“operator()”是隐式的 const。为什么标准委员会const
默认做出来?