Получите данные о камере из Интернета

Каждое выражение лямбда генерирует уникальный объект функции (замыкание), который сохраняет захваченные переменные в качестве элементов данных. Например, выражение lambda в вашем коде будет преобразовано в компилятор таким образом:

struct __uniquely_named_lambda
{
  __uniquely_named_lambda(int& pos)
  : pos(pos) {}
  int& pos;

  void operator()() const
  { ++pos; }
};

Вызов лямбда - это просто вызов operator().

элемент данных является ссылкой, поскольку вы захватили по ссылке. Если вы захватили по значению, это будет простой int. Также обратите внимание, что сгенерированный operator() по умолчанию const. Вот почему вы не можете изменять захваченные переменные, если не используете ключевое слово mutable.

0
задан RJK 5 March 2019 в 06:44
поделиться