C++ mutande lambda


Esempio

Per impostazione predefinita, l' operator() implicito operator() di un lambda è const . Ciò non consente di eseguire operazioni non const sul lambda. Per consentire la modifica dei membri, una lambda può essere contrassegnata come mutable , il che rende l' operator() implicito operator() non const :

int a = 0;

auto bad_counter = [a] {
    return a++;   // error: operator() is const
                  // cannot modify members
};

auto good_counter = [a]() mutable {
    return a++;  // OK
}

good_counter(); // 0
good_counter(); // 1
good_counter(); // 2