Код: Выделить всё
const auto lambda = [] () mutable {};
void foo()
{
lambda();
}
Какова цель этого преобразования? На мой взгляд, было бы более логично, если бы это было отклонено. Нет никаких признаков того, что программист намеревался выполнить это преобразование. Язык делает это самостоятельно.
Обратите внимание, что преобразование происходит только в приведенном выше случае, когда вызов lambda.operator()() приведет к отмене квалификаторов. Этого не происходит (т. е. оператор() вызывается напрямую), если лямбда не является константой или оператор() не помечен как изменяемый.
Подробнее здесь: https://stackoverflow.com/questions/784 ... g-operator