Выбор ответа Junior Лямбды и функциональные объекты спрашивают часто обновлено
Во что превращается лямбда
Вопрос
Что создаёт компилятор для лямбда-выражения?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Объект безымянного класса с operator() и полями для захватов. Лямбда это синтаксический сахар для функционального объекта (closure type).
Варианты ответа
- Объект безымянного класса с
operator()и полями для захватовправильный ответ - Обычную функцию в глобальной области, захваты становятся параметрами
- Указатель на функцию, а захваченные переменные копируются в кучу
- Объект
std::functionс захваченными переменными во внутреннем буфере
Разбор
Лямбда это синтаксический сахар для функционального объекта (closure type). Захваты превращаются в поля, тело в operator().
- Отдельная функция без состояния получается только как деталь реализации лямбды без захватов, к указателю на которую её можно привести.
- Никаких аллокаций само создание лямбды не делает.
std::functionэто отдельный тип-обёртка, лямбда им не является.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.