У меня есть небольшое "лямбда-выражение" в функции ниже:
int main()
{
int x = 10;
auto lambda = [=] () { return x + 3; };
}
Ниже приведен "класс анонимного замыкания", сгенерированный для вышеприведенного лямбда-выражения.
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
по умолчанию?