Скажем, у меня есть следующая переменная, содержащая лямбда:
auto a = [] { return true; };
И я хочу, чтобы a
позже вернулся false
. Могу ли я сделать что-то в этом роде?
a = [] { return false; };
Этот синтаксис дает мне следующие ошибки:
binary '=' : no operator found which takes a right-hand operand of type
'main::<lambda_a7185966f92d197a64e4878ceff8af4a>' (or there is no acceptable conversion)
IntelliSense: no operator "=" matches these operands
operand types are: lambda []bool ()->bool = lambda []bool ()->bool
Есть ли способ добиться чего-то подобного? Я хотел бы изменить переменную auto
на другую лямбду. Я относительно новичок, поэтому мне может не хватать некоторых знаний о auto
или лямбдах. Спасибо.
bool b = true; auto a = [&b] { return b; }; b = false;
, но оно, конечно, не распространяется на все ситуации. - person MSalters   schedule 28.07.2016