
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (78) « Первая ... 18 19 [20] 21 22 ... 77 78 ( Перейти к последнему сообщению ) |
Сообщ.
#286
,
|
|
|
Без понятия. Но - 3 заседания комитета в год
![]() В слайдах BoostCon09 был примерный план принятия. |
Сообщ.
#287
,
|
|
|
отвечая на собственный вопрос
![]() http://www.research.att.com/~bs/C++0xFAQ.html#what-features Цитата The standard is expected to be ready for final national votes in 2009 -- hopefully yielding C++09 even if the ISO bureaucracy takes some time work through its formalities. Учитывая последнюю дату изменения - 15 мая, думаю, эта фраза всё еще актуальна...будем надеяться... Добавлено Цитата After about a year's work -- probably September 2009 -- the committee will vote out a final draft for the national standards bodies to vote on. That final draft (FDIS) is likely to become the new standard with only typographical changes a few months later. |
Сообщ.
#288
,
|
|
|
Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++?
|
Сообщ.
#289
,
|
|
|
Цитата D_KEY @ Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++? Видимо, об этом ты нам расскажешь. ![]() |
Сообщ.
#290
,
|
|
|
Цитата Flex Ferrum @ Цитата D_KEY @ Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++? Видимо, об этом ты нам расскажешь. ![]() Если узнаю как, расскажу ![]() |
Сообщ.
#291
,
|
|
|
D_KEY
Подойдёт? ![]() ![]() []{[](){}();}(); |
Сообщ.
#292
,
|
|
|
Цитата mas912 @ D_KEY Подойдёт? ![]() ![]() []{[](){}();}(); А можно объяснить? Почему после первых [] идет не список аргументов, а тело? Почему после вложенного пустого тела и "главного" тела, идут ()? |
Сообщ.
#293
,
|
|
|
lambda-decl { lambda2-decl { lambda2-call} } lambda-call
где decl - объявление: [] и []() call - вызов: (); Список аргументов можно не писать, если он пуст; скобки идут для вызова, то есть, в теле лямбды1 идёт объявление и вызов лямбды2, после чего идёт вызов лямбды1. |
Сообщ.
#294
,
|
|
|
Цитата mas912 @ lambda-decl { lambda2-decl { lambda2-call} } lambda-call где decl - объявление: [] и []() call - вызов: (); Список аргументов можно не писать, если он пуст; скобки идут для вызова, то есть, в теле лямбды1 идёт объявление и вызов лямбды2, после чего идёт вызов лямбды1. Спасибо! Кажется понял... Хотя, я не понимаю, где тут рекурсия... Как вызвать в теле лямбды эту же лямбда-функцию? Как будет выглядеть, например, рекурсивное вычисление факториала с помощью лямбда? Вот обычная функция: ![]() ![]() int f( int n ) { return n < 2 ? 1 : n * f(n-1); } |
Сообщ.
#295
,
|
|
|
Цитата D_KEY @ Вот обычная функция: ... А вот лямбда: ![]() ![]() std::function<unsigned(unsigned)> f = [&f](const unsigned n) { return n < 2 ? 1 : n * f(n - 1); }; |
Сообщ.
#296
,
|
|
|
Цитата MT-Wizard @ Цитата D_KEY @ Вот обычная функция: ... А вот лямбда: ![]() ![]() std::function<unsigned(unsigned)> f = [&f](const unsigned n) { return n < 2 ? 1 : n * f(n - 1); }; Такой вариант приходит в голову, но не нет ли здесь неопределенного поведения, ведь f - неинициализированный объект на момент передачи в лямбда-функцию? |
Сообщ.
#297
,
|
|
|
Цитата D_KEY @ но нет ли здесь неопределенного поведения А в чём принципиальное отличие от ![]() ![]() std::function<unsigned(unsigned)> f; f = [&f](const unsigned n) { return n < 2 ? 1 : n * f(n - 1); }; Ведь внутри будет использовано значение f на момент вызова лямбды. |
Сообщ.
#298
,
|
|
|
Цитата MT-Wizard @ Цитата D_KEY @ но нет ли здесь неопределенного поведения А в чём принципиальное отличие от ![]() ![]() std::function<unsigned(unsigned)> f; f = [&f](const unsigned n) { return n < 2 ? 1 : n * f(n - 1); }; Ведь внутри будет использовано значение f на момент вызова лямбды. Скорее всего, действительно верно. Спасибо! Жаль, что нельзя сделать рекурсию без введения дополнительных сущностей... |
Сообщ.
#299
,
|
|
|
Цитата D_KEY @ Жаль, что нельзя сделать рекурсию без введения дополнительных сущностей... Не придумали аналога this для лямбды ![]() |
Сообщ.
#300
,
|
|
|
D_KEY
Инициализированный. Присваивание лямбды в функцию будет в рантайме, вызов тоже (и вызов функции из лямбды). |