Здравствуйте, rg45, Вы писали:
R>Ну, хорошо, согласен, полльза от такого применения лямбд есть: это позволяет давать функциям (лямбдам) максимально простые имена, не засоряя пространство имен, пусть даже анонимное. Но, что мне все же не нравится, это то, что мы исплоьзуем лямду не потому, что нам нужна лябмда, как таковая, а просто потому, что правила языка не позволяют нам определять функции внутри других функций. Нам же никогда не прийдет в голову написать лямбду в пространстве имен там, где достаточно обычной функции. Вот поэтому такое использование лямбд кажется мне нецелевым. Хотя и оправданным в некоторых случаях, таких как этот.
Есть ещё такой вариант использования лямбд
для инициализации констант:
const std::vector<int> v = [&]()
{
std::vector<int> a;
// Runtime initialization code
while(...)
if(...)
a.push_back(...);
return a;
}();
v - тут будет константой.