analizer 26.07.2011 11:22 mcabber

плюсота, а есть гарантия, что вот здесь: http://ideone.com/yrjN9 вызов f() не будет сделан в строке 11? а то мне из последнего драфта неочевидно что все вычисления внутри лямбды — ленивые.

c++0x, ?
1. kb 26.07.2011 11:24 Gajim

оно должно замкнуть ссылку на f, но не f(). Так что да, лениво.

2. analizerkb /1 26.07.2011 11:25 mcabber

ок, спасибо. что-то я не увидел что всё что внутри — тоже замыкается.

3. kbanalizer /2 26.07.2011 11:26 Gajim

я в плюсах не знаю как. Ну попробуй объявить переменную int a = 10;, потом чтоб функция вернула замыкание return a + 1 и вызови эту функцию и то, что она вернула. Понимаешь?

4. analizerkb /3 26.07.2011 11:28 mcabber

ну плюсах-то явно будет указано [&a](){return a + 1;}, т.е. тут-то ясно будет указано что на «a» надо схоронить ссылку.

5. kbanalizer /4 26.07.2011 11:28 Gajim

Аа. А если захочешь "замкнуть" — надо передавать копию a туда, да? (ну, если a — объект какой)

6. analizerkb /5 26.07.2011 11:30 mcabber

мне пофиг на «замкнуть», мне хочется знать что вычисления не зависящие от параметров — ленивы.

7. kbanalizer /6 26.07.2011 11:31 Gajim

ну это просто анонимная функция. Представь себе, что функция эта объявлена не анонимно а явно.

8. analizerkb /7 26.07.2011 11:32 mcabber

ок, годная аналогия. согласен.

9. kbanalizer /8 26.07.2011 11:32 Gajim

какая нахрен аналогия. Это оно и есть.

Do you really want to delete ?