Комитет С++ планирует добавить в следующую версию стандарта С++ поддержку 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)
- Форум А знаете как деплоить C++20 modules с библиотекой? (2022)
- Новости В ожидании GCC 12.1 (2022)
- Форум Это KDE-копец? (2011)
- Форум лисп (2005)
- Форум Лисп (2002)