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

    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
    #include <iostream>
    #include <vector>
    
    template <typename T>
    struct Vec {
            T x, y;
    
    	Vec& operator /=(const T& d) {
                x /= d;
                y /= d;
    	    return *this;
    	}
    };

    Найдите баг в коде.

    Посмотрел этот видос: https://www.youtube.com/watch?v=4M1MlW0sP0Q

    Запостил: 3_dar, 11 Января 2021

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

    • Понятно, что сейчас налетят питухи, и скажут, что как может быть баг в коде, который ничего не делает.

      Переформулируем так: при каком использовании этого класса можно получить какой багор.
      Ответить
      • Ну только если тип T не является группой с делением.
        Но тут компилятор не пропустит.
        А так можно на ноль поделить.
        Можно поделить на Vec, т.е. вектор на вектор хотя алгебраически такая операция не определена.
        Ответить
        • Привет, Уранетз. Ну как, нашёл работу?
          Ответить
        • Нет, задумано не это. Подсказка в названии видео.
          Ответить
    • Что, никто не знает?
      Ответить
    • > Посмотрел этот видос: https://www.youtube.com/watch?v=4M1MlW0sP0Q

      Отлично, очередные рассуждения о каком-то внутриязыковом говне в крестопараше. Можно будет просматривать его, если надо проблеваться.

      Ссылки, значения, xvalue, pvalue объекты-хуекты какие-то блядь, мув-семантики... понапридумывали поебени какой-то
      Ответить
    • Как-то тухло. Где борманд, где инканус, где макака, где посрать-плюсплюс, где ГОСТ, где остальные???
      Даю еще сутки.
      Ответить
      • "Дал тебе в сутки, проверь."

        Так лучше?
        Ответить
      • не буду смотреть видео
        текст давай

        беглый взгляд говорит, что для тривиали копибал T работать будет, а что будет для классов в конструкторами надо думать, но я не С++сник
        Ответить
        • Крестошалава, крестопутана и крестопрофурсетка.
          Ответить
      • ну в твоем видео есть ответ на твой ответ, в районе 20 минуты
        примерно с первого клика нашел, кстати
        заставил меня открывать, вот и чего ты добился?

        если проверить его (твой) пример на godbolt на -O2, то сук никакой разницы между конст реф и значением, что для даблов, что для интов
        может, в 2017 была?
        Ответить
        • Я знаю ответ. Очень понравился какой багор, после чего решил сюда занести.
          Ответить
        • видео не сомтрел

          там юморо в том, что для тиривальных объектов можно вместо конст реф передать значение, бо нет разницы между константной ссылкой на единичку и самой единичкой?
          Ответить
          • Там юмор в том, что если передать по ссылке или по значению, код будет работать по разному.
            Ответить
            • разве не должно всегда передаваться по ссылке, если заявлено в сигнатуре? или для примитивных типов компилятор может схитрить?
              Ответить
              • Если сигнатуру поменять на «по значению» - код пофиксится. Нужно сказать какой именно кейс пофиксится. Тип примитивный. template я добавил чтобы запутать потому, что const double& передавать - это говно какое-то, и бросается в глаза.
                Ответить
                • хуй вас крестоблядей знает

                  если я пхну туда литерал 42.0, то у меня создасца временная переменная, и ссылка на нее передасца в оператор. Там на нее поделица, и сохраница значение. Затем, переменная уничтожица.
                  Ответить
    • Ответ:

      Vec<double> a = {2.0, 5.0};
      a /= a.x;
      Ответить
    • мне похрен на С++ с их головной болью. я свой TypeScript компилятор на LLVM пишу. там не будет этого г-на как мувинги и хрени. все поинтер все только хардкор :)
      Ответить

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