Entry tags:
программистское, замыкания
(эта запись может быть интересна только программистам)
Оказывается, в gcc уже черт знает сколько лет существуют замыкания в виде вложенных функций. Настоящие замыкания! Но только в C, в C++ они не работают (в C++ теперь есть лямбды, но это ж недавно).
А мужики-то и не знали! Если серьезно, я поражен.
Update. Карнавал отменяется. Это не настоящие замыкания, они не сохраняют жизнь пойманным локальным переменным при выходе из функции. Ну, так неинтересно. Как-то даже обидно стало. Пустышка.
Ладно, будем лямбды значит внедрять в народное хозяйство. Кстати, пару недель назад впервые написал настоящую лямбду в рабочем коде на C++.
Оказывается, в gcc уже черт знает сколько лет существуют замыкания в виде вложенных функций. Настоящие замыкания! Но только в C, в C++ они не работают (в C++ теперь есть лямбды, но это ж недавно).
А мужики-то и не знали! Если серьезно, я поражен.
Update. Карнавал отменяется. Это не настоящие замыкания, они не сохраняют жизнь пойманным локальным переменным при выходе из функции. Ну, так неинтересно. Как-то даже обидно стало. Пустышка.
Ладно, будем лямбды значит внедрять в народное хозяйство. Кстати, пару недель назад впервые написал настоящую лямбду в рабочем коде на C++.
no subject
no subject
Более серьезная имплементация делала бы одно из двух:
- копировала переменные, использованные во вложенной функции, для ее использования (так в лямбдах C++11)
- создавала именно эти переменные не на стэке, а в куче, и давала им жить после выхода из функции (это формально говоря не нарушает стандарт, я думаю, но реально слишком сильно нарушает сложившиеся конвенции, чтобы всерьез рассматривать эту возможность)
no subject