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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // Since C++20
    
    struct A {
      int&& r;
    };
    A a1{7}; // OK, lifetime is extended
    A a2(7); // well-formed, but dangling reference

    Удачной отладки!

    Запостил: PolinaAksenova, 06 Мая 2021

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

    • Правило Ноги: количество новых фич в очередной версии Стандарта ня должно превышать количество новых способов выстрелить в ногу.
      Ответить
      • Перефразируя старый анекдот: это не язык, а какой-то Форт Бойар.
        Ответить
        • Отличная идея! У каждого члена команды есть ПДА. В каждой комнате, ему предстоит выбрать среди множества компилирующихся кусков кода один. Правильный позволит пройти уровень, остальные распидарасят память и окирпичат ПДА. Если у команды не осталось рабочих ПДА — она проигрывает.
          Ответить
      • Хорошо, гост.
        Ответить
    • Не хватает a3[7] и a4<7>
      Ответить
    • copy initialization, direct initialization, list initialization, default initialization, value initialization, zero initialization, aggregate initialization...

      Ничего не забыл? И это всё разные вещи :/
      Ответить
      • https://mikelui.io/img/c++_init_forest.gif

        > Человек, который хорошо в нем ориентируется - это хорошее зубрилко а не хороший программист.
        Ответить
      • static initialization и dynamic initialization для глобалок ещё вроде.
        Ответить
    • темпорари объекты вообще отличное болото для того, чтобы там утонуть
      Ответить
      • Можно твой ник взять?
        Ответить
      • Нахуй вообще в структуре хранить ссылку на ссылку?
        Ответить
        • Это не ссылка на ссылку, это хуйня какая-то неведомая, умные люди её называют «rvalue reference».
          Ответить
          • > Это не ссылка на ссылку

            Вот кстати, а ** -- это не rvalue pointer, а просто указатель на указатель.

            Какая консистентность )))

            З.Ы. && это не только rvalue reference, но ещё и universal reference, если в шаблоне.
            Ответить
            • Потому что указатель на указатель был в няшной, а ссылки на ссылку не было в крестах, и до 11 это была синтаксическая ошибка:)

              А зачем вообще придумали ссылку? Чтобы меньше писать кода с указателем, или чтобы способом передачи управлять на уровне сигнаруты функции?
              Ответить
            • И ещё смешнее, что в b && a = b(), а — lvalue, привязанное к rvalue. И через него можно обращаться к rvalue, как к lvalue.
              Ответить
    • c++ это попа-боль. вместо того что бы уменьшать головную боль ее только множат :)
      Ответить
    • такой багор!

      https://github.com/dotnet/runtime/issues/51935

      The whole period of square wave sounds an awful lot like it is around 49.7 days. That is how long it takes GetTickCount() to wrap around. On POSIX platforms the platform abstraction layer implements this, and the value returned for that is based not on uptime but on wall clock time, which matches with all machines changing on the same day.
      Ответить
      • А в чём багор-то?
        Ответить
        • Да чуваки просто GetTickCount() в знаковое число засунули и оно у них периодически в минус улетало.
          Ответить
          • Какой багор!!!
            Ответить
            • Багор в том, что на винде у разрабов походу аптайма больше 20 дней никогда не было...
              Ответить
              • Надо же переустанавливать сервер когда-нибудь!
                Ответить
              • Какой анскилл. У меня даже на домашнем компе без бесперебойника больше.
                https://i.imgur.com/uETCNTf.png
                Ответить
                • Всё правильно делают. Большой аптайм на серванте — это анскилл, и признак отстутствия fault tolerance и апдейтов.
                  Ответить
                  • Ня!
                    https://i.imgur.com/fDXcBNH.png
                    Ответить
                  • > апдейтов

                    Я понимаю, что ни дня без апдейта -- это стильно, модно, молодёжно.

                    Но если сервис старый и стабильный, то нафиг его апдейтить и перезагружать? Ну кроме секьюрити фиксов в каком-нибудь openssl раз в полгода.
                    Ответить
                    • Опенссл можно обновить не перезагружая ОС, это не винда.
                      А вот секьюрити апдетйты ядра это другое дело (вроде бы есть попытки обновить ядро без перезагруза, но я не пробовал).

                      В принципе, ничто не мешает тебе ставить обновления только по каналу security, а свистелки и пирделки не ставить

                      Но сервер всё равно лучше иногда перезагружать, чтобы быть уверенным, что он поднимется, и что его работу может принять на себя другой сервер
                      Ответить
                      • > попытки обновить ядро без перезагруза

                        Это скорее попытки перезагрузить ядро без потери юзермода, емнип...

                        З.Ы. Ан нет, этот kpatch просто функции подменяет на новые версии.
                        Ответить
                    • > Но если сервис старый и стабильный, то нафиг его апдейтить и перезагружать?

                      Главным образом потому, что рагулярная перезагрузка — это light версия chaos engineering. Железка рано или поздно сдохнет, и окажется, что после года аптайма накопилась куча мелких ручных изменений в конфе, тут статические руты насоздавали, тут файлик подправили, тут патчик залилили, и т.д.
                      В результате, когда придёт полярная лисичка, поднять всё это быстро не получится.
                      Т.е. регулярный сброс состояния ­— это залог того, что система не совсем уж полными ротоёбами эксплуатируется, и имеет запас прочности.
                      Ответить
                      • Это примерно как регулярно восстанавливать бекапы: в теории нужно, но мамкины админы часто забивают
                        Ответить
                      • P.S. Есть эмпирическое наблюдение, что если на серванте аптайм в год, то любая попытка что-то с ним сделать оборачивается интенсивной ручной гальванизацией всех сервисов под аккомпанемент рвущегося слака.
                        Ответить
                        • У нас в одном проекте на AWS на EC2 сервантах вообще ничего нельзя руками править (даже по ssh ходить): всё только через тераформ. Это гарантирует некоторую повторяемость в случае смерти машинки (которая, кстати, может случиться в любой момент: Amazon ничего гарантирует)

                          А всякая офисная питушня конечно годами крутится
                          Ответить
                          • > У нас в одном проекте на AWS на EC2 сервантах вообще ничего нельзя руками править (даже по ssh ходить): всё только через тераформ. Это гарантирует некоторую повторяемость в случае смерти машинки (которая, кстати, может случиться в любой момент: Amazon ничего гарантирует)

                            This is da wae.
                            Ответить
                    • > Ну кроме секьюрити фиксов в каком-нибудь openssl раз в полгода.

                      Ах, если бы секьюрити фиксы только раз в полгода прилетали.
                      Ответить
          • > wrap around
            скорее в 0
            нечто, что должно монотонно расти

            вот чего я не понимаю, так зачем это тащить на жидхаб, когда можно просто сделать sfc /scannow
            Ответить
            • Там дальше причины описаны, суть такова, что у них есть переменная, в которой хранится, после какого тика нужно снова всю эту хуйню запускать. В общем, в каждой непонятной ситуации она инициализировалась в 0 и если счётчик тиков отрицательный, то нихуя не запускалось, потому что все ждали, пока он станет положительным.
              Ответить
              • а, теперь понял где в знаковое превращается, у меня есть вывод прогресса уязвимый к этому, надо бы починить чтоли чтобы не быть как .NOT
                Ответить
            • > скорее в 0

              Ну да в 0, ибо DWORD. Но эти лалки его в знаковый инт засунули, поэтому 20 дней оно в минусах.
              Ответить

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