Комитет С++ планирует добавить в следующую версию стандарта С++ поддержку lambda-функций и замыканий.
Примеры lambda-функций:
for_each( w.begin(), w.end(),
[]( const Widget& w ) { cout << w << " "; } );
int minWeight = 100;
find_if( w.begin(), w.end(),
[]( const Widget& w ) -> bool { w.Weight() > minWeight; } );
Замыкания там, конечно, безобразные. Если, например, захватить ссылки
на локальные переменные, то, как несложно догадаться,
the effect
of invoking a closure object, or a copy, after the innermost block scope of the context of the lambda expression has
been exited is undefined.
Почему это назвали замыканием а не обычной вложенной функцией, мне
не совсем понятно, может кто объяснит?
В таком «замыкании» достаточно сохранить указатель на фрейм
статически предыдущей функции.
Это, кстати, то, что делает delegate в D 1.0, в D 2.0 замыкания куда честнее.
Ссылка на блог Herb Sutter-а, С++ эксперта, члена комитета стандарта ISO С++,
работающего архитектором программного обеспечения в Microsoft:
http://herbsutter.spaces.live.com/
Ссылка на описание:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf

Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Legioner

Ответ на:
комментарий
от amoralyrr

Ответ на:
комментарий
от vahvarh

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум rust vs. c++: hash & allocators (2016)
- Форум Герб Саттер предлагает добавить в С++ метаклассы (2017)
- Форум std::async deprecated (на самом деле нет) (2016)
- Новости C++0x: концептов не будет (2009)
- Новости Опубликован стандарт C++11 (бывший C++0x) (2011)
- Форум Это KDE-копец? (2011)
- Форум Лисп (2002)
- Форум лисп (2005)
- Форум Бьёрн Страуструп выбирает борщ: «С++ почти так же быстр как Haskell» (2013)
- Форум Почему микрософту таки копец (2008)