- 1
- 2
- 3
- 4
- 5
auto r = [&](){
for(auto i: a)
if(i==k)
return f(i);
}();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+7
auto r = [&](){
for(auto i: a)
if(i==k)
return f(i);
}();
Однажды мне знакомый рассказывал, что во многих языках плохие грязные циклы. Мол настоящие чистые циклы должны возвращать значение. Я написал ему вот это. Он многозначительно подумал и замолчал. Через две с половиной недели он уволился.
ВСЕ ПРОСТО И ПОНЯТНО
Квадратные скобочки нужны для контроля передачи свободных переменных в замыкание - по ссылке или по значению.
[&] - передавать всё по ссылке
[=] или просто [] - передавать всё по значению
Можно контролировать передачу на уровне отдельных переменных. Не забывай, GC тут нет, без контроля передачи свободных переменных лямбды были бы бесполезны.
Не хватает только захвата по rvalue reference с передачей владения.
Неправда :) Пустые скобки вообще ничего не захватывает.
WTF?! Какой еще this лямбды?
[this](){ ... } вроде бы работало, [=](){...} тоже.