На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (78) « Первая ... 18 19 [20] 21 22 ...  77 78  ( Перейти к последнему сообщению )  
> Текущий Стандарт С++ и перспективы его развития
    Без понятия. Но - 3 заседания комитета в год :o
    В слайдах BoostCon09 был примерный план принятия.
      отвечая на собственный вопрос :D
      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.
        Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++?
          Цитата D_KEY @
          Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++?

          Видимо, об этом ты нам расскажешь. :)
            Цитата Flex Ferrum @
            Цитата D_KEY @
            Кто-нибудь подробно уже изучал С++'ные лямбды? Как сделать рекурсивную лямбда-функцию на новом С++?

            Видимо, об этом ты нам расскажешь. :)

            Если узнаю как, расскажу ;)
              D_KEY
              Подойдёт?
              ExpandedWrap disabled
                []{[](){}();}();
                Цитата mas912 @
                D_KEY
                Подойдёт?
                ExpandedWrap disabled
                  []{[](){}();}();

                А можно объяснить?
                Почему после первых [] идет не список аргументов, а тело? Почему после вложенного пустого тела и "главного" тела, идут ()?
                  lambda-decl { lambda2-decl { lambda2-call} } lambda-call
                  где decl - объявление: [] и []()
                  call - вызов: ();

                  Список аргументов можно не писать, если он пуст; скобки идут для вызова, то есть, в теле лямбды1 идёт объявление и вызов лямбды2, после чего идёт вызов лямбды1.
                  Сообщение отредактировано: mas912 -
                    Цитата mas912 @
                    lambda-decl { lambda2-decl { lambda2-call} } lambda-call
                    где decl - объявление: [] и []()
                    call - вызов: ();

                    Список аргументов можно не писать, если он пуст; скобки идут для вызова, то есть, в теле лямбды1 идёт объявление и вызов лямбды2, после чего идёт вызов лямбды1.

                    Спасибо! Кажется понял...
                    Хотя, я не понимаю, где тут рекурсия... Как вызвать в теле лямбды эту же лямбда-функцию?
                    Как будет выглядеть, например, рекурсивное вычисление факториала с помощью лямбда?
                    Вот обычная функция:
                    ExpandedWrap disabled
                      int f( int n )
                      {
                          return n < 2 ? 1 : n * f(n-1);
                      }
                    Сообщение отредактировано: D_KEY -
                      Цитата D_KEY @
                      Вот обычная функция: ...

                      А вот лямбда:
                      ExpandedWrap disabled
                        std::function<unsigned(unsigned)> f =
                           [&f](const unsigned n)
                           {
                              return n < 2 ? 1 : n * f(n - 1);
                           };
                        Цитата MT-Wizard @
                        Цитата D_KEY @
                        Вот обычная функция: ...

                        А вот лямбда:
                        ExpandedWrap disabled
                          std::function<unsigned(unsigned)> f =
                             [&f](const unsigned n)
                             {
                                return n < 2 ? 1 : n * f(n - 1);
                             };

                        Такой вариант приходит в голову, но не нет ли здесь неопределенного поведения, ведь f - неинициализированный объект на момент передачи в лямбда-функцию?
                          Цитата D_KEY @
                          но нет ли здесь неопределенного поведения

                          А в чём принципиальное отличие от
                          ExpandedWrap disabled
                            std::function<unsigned(unsigned)> f;
                            f = [&f](const unsigned n)
                               {
                                  return n < 2 ? 1 : n * f(n - 1);
                               };
                          ?
                          Ведь внутри будет использовано значение f на момент вызова лямбды.
                            Цитата MT-Wizard @
                            Цитата D_KEY @
                            но нет ли здесь неопределенного поведения

                            А в чём принципиальное отличие от
                            ExpandedWrap disabled
                              std::function<unsigned(unsigned)> f;
                              f = [&f](const unsigned n)
                                 {
                                    return n < 2 ? 1 : n * f(n - 1);
                                 };
                            ?
                            Ведь внутри будет использовано значение f на момент вызова лямбды.

                            Скорее всего, действительно верно. Спасибо! Жаль, что нельзя сделать рекурсию без введения дополнительных сущностей...
                              Цитата D_KEY @
                              Жаль, что нельзя сделать рекурсию без введения дополнительных сущностей...

                              Не придумали аналога this для лямбды :)
                                D_KEY
                                Инициализированный. Присваивание лямбды в функцию будет в рантайме, вызов тоже (и вызов функции из лямбды).
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (78) « Первая ... 18 19 [20] 21 22 ...  77 78


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0626 ]   [ 16 queries used ]   [ Generated: 19.06.25, 16:48 GMT ]