Lambda functions (починаючи з C 11)

Створює замикання: безіменний об'єкт-функцію, здатний захоплювати змінні контекст.

Зміст

[ред.] Синтаксис

3) Опущений тип, що повертається в кінці: повертається тип замикання operator() виводиться відповідно до наступних правил:

  • якщо body складається з одного оператора return , то тип, що повертається є типом повертається виразу (після неявного перетворення rvalue до lvalue, масиву до покажчика, або функції до покажчика)
  • Інакше повертається тип void

4) Пропущено список параметрів: функція не приймає аргументів, якби список параметрів був()

[ред.] Пояснення

Список символів може бути переданий таким чином:

  • [a,&b]деaзахоплена за значенням, аbзахоплена за посиланням.
  • [this]захоплює покажчикthisза значенням.
  • [&]захоплення всіх символів за посиланням
  • [=]захоплення всіх символів за значенням
  • []нічого не захоплює

Closure types не CopyAsignable.

Покровитель implicitly-declared.

Type of each data member is the type of the corresponding captured entity, except if the entity has reference type (in that case, references to functions are captured as-is, and references to objects are captured as copies of referenced objects).