Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Замыкания в C++ являются обычными объектами функций.
Closures are just function objects in C++
operator () , то лучше перевести «объект-функтор». Но тогда при чем тут «замыкания»?Расскажите поподробнее, что подразумевалось в этой строке?
Если же речь о том, что лямбды в C++ захватывают объекты из контекста либо по значению, либо по ссылке, то при чем тут функции?
auto range = fromto(0, 10);
range(); // 0
range(); // 1
// (3 + 4) * 5 = 20
auto fromto = [](auto start, auto finish) {
return [=]() mutable {
if(start < finish)
return start++;
else
throw std::runtime_error(“Complete");
};
};
[](){ ... } будет соответствовать варианту вообще без захвата окружения? То есть, это будет лямбда, но без замыкания. Налагает ли это какие-то дополнительные ограничения на использование?auto auto(auto auto)
{
auto;
}
всё ближе.for (x: xs) { ... }
for (auto&& x: xs) { ... }
for (auto x: xs) { ... }
Новые возможности лямбд в C++14