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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    // https://github.com/gcc-mirror/gcc/blob/ec03862f809e544a9b7d28067e51597dc92a0244/libstdc%2B%2B-v3/include/bits/forward_list.tcc#L391-L411
    
      template<typename _Tp, typename _Alloc>
        bool
        operator==(const forward_list<_Tp, _Alloc>& __lx,
    	       const forward_list<_Tp, _Alloc>& __ly)
        {
          //  We don't have size() so we need to walk through both lists
          //  making sure both iterators are valid.
          auto __ix = __lx.cbegin();
          auto __iy = __ly.cbegin();
          while (__ix != __lx.cend() && __iy != __ly.cend())
    	{
    	  if (!(*__ix == *__iy))
    	    return false;
    	  ++__ix;
    	  ++__iy;
    	}
          if (__ix == __lx.cend() && __iy == __ly.cend())
    	return true;
          else
    	return false;
        }

    из стандартной библиотеки крестоговна от GCC

    Запостил: j123123, 13 Апреля 2022

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

    • Зачем писать говно вида "if (хуйня) return true else return false" если можно просто "return хуйня"?
      Ответить
      • Поднимите глаза до названия сайта.
        Ответить
        • поднимите мне веки, я не вижу контекста
          Ответить
          • веки но реки
            Ответить
          • > поднимите мне веки
            https://lleo.me/arhive/humor/vij_98.shtml

            — Глаза не может быть использован для прямого доступа из-за конфликта с органом веки. Удалить глаза? Оставить?

            — Оставить!

            — О'кей. Поднять веки?

            — Да!

            — Ошибка. Попробовать еще раз?

            — Да!

            — Ошибка. Попробовать еще раз?

            — Да!

            — Ошибка. Попробовать еще раз?
            Ответить
            • попробуйте sfc /scannow
              Ответить
            • Веревка достаточной длины, чтобы выстрелить себе в ногу:

              Представьте графический интерфейс пользователя Windows на автомобиле. Вы трогаетесь, выбрав в главном меню пункт "Движение автомобиля". Щелчок по нему откроет меню "Переключение скорости", которое предложит вам выбор из опций "Вперед", "Назад" и "Нейтральная". Щелкните по одной из них, чтобы передвинуть флажок на нужное вам направление. Затем вернитесь в меню "Движение автомобиля" и выберите команду "Поехали". Это вызовет появление диалогового окна "Скорость", где вы должны использовать ползунок для ввода желаемой скорости. Однако установить скорость правильно трудно вследствие высокого разрешения ползунка (пол-миллиметра движения мыши соответствует примерно 1 км/ч), поэтому вы скорее установите 59,7 км/ч вместо 60. Затем вы нажимаете кнопку "Поехали" в диалоговом окне, вслед за чем появляется сообщение "Стояночный тормоз не убран - нажмите F1 для справки" (динамик издает громкий звук). Вы покорно щелкаете по кнопке "ОК", чтобы убрать окно сообщений, затем снова пытаетесь открыть главное меню, но машина просто посылает вам звуковой сигнал. Наконец, поняв, что дело в том, что диалоговое окно "Скорость" еще отображается, вы щелкаете по кнопке "Отмена", чтобы убрать его. Вы открываете меню "Стояночный тормоз" и убираете флажок "Включен". Затем вы снова открываете окно "Поехали". И вновь получаете сообщение (и громкий звук) о том, что вы должны сначала выбрать направление в меню "Переключение скорости". В этот момент вы решаете, что вам, может быть, лучше пройтись на работу пешком.
              Ответить
            • веки не может быть open
              Ответить
      • Видимо, так больше похоже на человеческий ход мысли. "Если оба итератора в конце, то да. Иначе нет."
        Ответить
      • j123123 впал в е-ресь отрицания классического булшита! Burn him!
        Ответить
      • Для читаемости
        Ответить
    • Они реально так именуют переменные, или это после обфускатора?
      Ответить
      • Они реально так форматируют код, или это после uglify?
        Ответить
      • Это на случай, если кто-нибудь сделает перед инклюдом #define lx 12345? (а #define __lx это уже UB и сам дурак)
        Правда, так же можно сделать и #define begin end /* счастливой отладки */, но, может, это тоже как-то в стандарте учтено...
        Ответить
        • Учтено. Запрещено дефайнить имена функций и методов, упомянутых в стандарте.
          Ответить
          • От совпадения имени локалки в библиотечной функции с именем макроса это не спасёт
            Ответить
            • Именно поэтом локалки в библиотечной функции с "__".
              Ответить
        • Да, я понимаю зачем это сделано. Я спросил они вручную это делат, или тулзы какие-то?
          Ответить
          • Не знаю. Но мне кажется, что тут достаточно кодстайла, два подчеркивания можно написать и вручную.
            Ответить
    • нахуя ковыряться внутри? вы внуторь тян тоже заглядываете?
      Ответить
      • * g o a t s e x * g o a t s e x * g o a t s e x *
        g                                               g
        o /     \             \            /    \       o
        a|       |             \          |      |      a
        t|       `.             |         |       :     t
        s`        |             |        \|       |     s
        e \       | /       /  \\\   --__ \\       :    e
        x  \      \/   _--~~          ~--__| \     |    x
        *   \      \_-~                    ~-_\    |    *
        g    \_     \        _.--------.______\|   |    g
        o      \     \______// _ ___ _ (_(__>  \   |    o
        a       \   .  C ___)  ______ (_(____>  |  /    a
        t       /\ |   C ____)/      \ (_____>  |_/     t
        s      / /\|   C_____)       |  (___>   /  \    s
        e     |   (   _C_____)\______/  // _/ /     \   e
        x     |    \  |__   \\_________// (__/       |  x
        *    | \    \____)   `----   --'             |  *
        g    |  \_          ___\       /_          _/ | g
        o   |              /    |     |  \            | o
        a   |             |    /       \  \           | a
        t   |          / /    |         |  \           |t
        s   |         / /      \__/\___/    |          |s
        e  |           /        |    |       |         |e
        x  |          |         |    |       |         |x
        * g o a t s e x * g o a t s e x * g o a t s e x *
        Ответить
      • Я заглядывал
        Ответить
    • Где здесь C++?
      Ответить
    • > if (!(*__ix == *__iy))
      Почему не *__ix != *__iy ?


      В начало можно ещё воткнуть
      if (__lx == __ly)
        return true;
      Ответить

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