1. C++ / Говнокод #7677

    +165

    1. 1
    std::cout << [&i](){return i;}();

    И вот ещё одна жертва стандарта. На этот раз она в пасть лезет добровольно.

    Запостил: Говногость, 28 Августа 2011

    Комментарии (19) RSS

    • Интересно, чем руководствовался автор? Видимо получилось после переписывания логики программы или рефакторинга.
      Ответить
    • показать все, что скрыто100 постов до гета.
      Ответить
    • здесь стандарт - жертва.
      Ответить
      • Стандарт жертва того, кто его создал.
        Ответить
        • нет, он опять в роли микроскопа, которым вновь забивают гвозди, но уже с особым цинизмом
          Ответить
    • А я так и не понял, кстати, что делает список замыкания.
      Ответить
      • Омг, ты о плищель он плищель, кто там его вызывал - возрадуйтесь
        Ответить
      • int тарас_блеать=65;
        [тарас_блеать](){printf(тарас_блеать);}();
        //список захвата содержит список захватываемых переменных и способ их захвата.
        Ответить
        • Ну а если тут не написать тарас_блеать в квадратных скобках, то что изменится?
          Я ни в одном языке, кроме крестов, не видел списка захвата почему-то. Наверное, это потому, то С++ крутой кулхацкерский язык.
          Ответить
          • int тарас_блеать=65;
            [](){printf(тарас_блеать);}();
            //тарас_блеать генерирует ошибку, тк не доступен внутри замыкания для безопасности.

            int тарас_блеать=65;
            [&тарас_блеать](){printf(тарас_блеать);}();
            //тарас_блеать захвачен по ссылке.
            Есть много и других возможностей, типа mutable или [&] или [=] и тд. Последние 2 варианта захватывают по ссылке и значению все окружающие переменные, если они нужны. Понятно, что мы теряем возможность контроля ошибок использования лишних переменных. Там реально много возможностей, типа [=, &тарас_блеать], но нет вывода типа параметров функции, без чего лямбды С++ становятся дешёвой игрушкой.( Но лучше с ними, чем без них.
            Ответить
    • Что означает этот Твиит и цифра рядом?
      Ответить
      • Эта хрень считает, сколько сообщений в Твиттере ссылаются на этот ГК.
        Вот сюда посмотрите:
        http://topsy.com/govnokod.ru/7677
        Ответить
      • это означает, что C++0x - говно
        Ответить
    • По ссылке зря передали i.
      Ответить

    Добавить комментарий