yms: (Default)
[personal profile] yms
Немного отойдя от C++, я только сегодня узнал, что лямбда-выражения туда проникают не хуже, чем в C#:

for_each(v.begin(), v.end(), [](int n) { cout << n << " "; });

(там еще дофигища новых фич языка, кое в чем перекрывающихся с C# 3.0)

а здесь — большая лекция старого доброго Бьярне о новых фичах языка (в онлайне удобнее смотреть здесь).

Date: 2009-03-04 07:17 pm (UTC)
From: [identity profile] tridecahedron.livejournal.com
Лучше бы void (int n) { cout << n << " "; } , а closure variables из контекста.

Date: 2009-03-04 07:34 pm (UTC)
From: [identity profile] yms.livejournal.com
closure variables из контекста

Вроде C# так и делает, а зачем в c++ понадобилось явное описание - не знаю. Может, для эффективности.

Date: 2009-03-04 07:50 pm (UTC)
From: [identity profile] tridecahedron.livejournal.com
Что толку вообще от лямбды, когда тот же for_each ждет в этом месте объект-функцию. Тогда уж надо for_each(v.begin(), v.end(), class: public unary_function<int,void> { void operator() (int n) {cout << n << " ";} } () ); :D

Date: 2009-03-04 07:57 pm (UTC)
From: [identity profile] yms.livejournal.com
о хосподи :)

Date: 2009-03-04 08:05 pm (UTC)
From: [identity profile] tridecahedron.livejournal.com
Ага. И потом это дело копипейстить по всему коду, потому как не сошлешься на безымянное.

Date: 2009-03-04 08:37 pm (UTC)
From: [identity profile] tridecahedron.livejournal.com
Там, кстати, написано, зачем. "Тhis forces the user to declare their intent to reference local variables or copy them." Чтобы не жаловался потом, что ссылки на автоматические переменные повисли.

Profile

yms: (Default)
Michael Yutsis

March 2022

S M T W T F S
  12 345
678910 1112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 24th, 2026 05:30 am
Powered by Dreamwidth Studios