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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    MyType(const CopyPastedFromSomewhere&) = delete;
    MyType& operator=(const CopyPastedFromSomewhere&) = delete;
    
    MyType& operator=(const MyType*) = delete;
    
    // Winner?
    MyType& MyType(const MyType&) = delete;

    А что можно найти в вашей кодовой базе? К слову, выяснилось, что вариант

    void operator=(const MyType&) = delete;
    вполне себе допустим.

    Запостил: roman-kashitsyn, 02 Марта 2018

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

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

        Конструктор копирования не может ничего вернуть. Winner удаляет функцию с именем MyType, которую компилятор и так синтезировать не собирался.
        Ответить
        • > MyType& operator=(const MyType*) = delete;
          >> = delete;

          Поясните, что происходит вообще?
          К удалению объекта при присваивании и перегрузке delete это отношения не имеет?
          Ответить
          • Ну очевидно же... Оператору присваивания присвоили оператор удаления. Т.е. при вызове оператора присваивания объект удалится.
            Ответить
            • Кстати, откуда пошло комментарии зелёным выделять? Что-то кроме ГК нигде такого не видел.
              Ответить
              • обычно красненьким принято, а тут, видимо, кто-то решил соргиниальничать в свое время
                Ответить
              • Зелёная кожа у троллей.
                Ответить
              • В /s/ был иногда CAPSGREEN
                Ответить
                • Вот ты, оказывается, какая, аудитория /s/.
                  Ответить
                  • Ты там не был походу ни разу
                    Ответить
                    • Давай, давай, а ну, давай,
                      Меня шмонай ты, вертухай,
                      Да загляни под юбочку,
                      Да посмотри на булочки.
                      Понюхай попку носиком,
                      Прикинься, киса, пёсиком,
                      Вот в этом вся и разница,
                      Кто хочет, а кто дразнится.

                      ©Любимая группа мамки админа
                      Ответить
            • Какие у вас в плюсах паттерны оригинальные:)
              Ответить
              • Хех, это сахарок! Патерн - объявлять и писать реализацию в private ;)
                Ответить
            • >Оператору присваивания присвоили оператор удаления

              У меня мозг сейчас взорвётся.
              Неужели у плюсовика сама фраза не вызывает никакого диссонанса?
              Ответить
        • Так это вообще что такое: MyType& MyType(const MyType&) ?
          Ответить
          • Функция с именем MyType, которая принимает MyType const& и возвращает MyType&
            > которую компилятор и так синтезировать не собирался.

            Кто-то криво отредактировал скопипасченное, должно быть
            MyType(const MyType&) = delete;
            Ответить
          • #define MyType auto
            C++20!
            Ответить
            • >#define MyType auto
              Я и в C89 так могу сделать.
              Ответить
              • все уже и забыли что был такой storage duration modificator в древних сях)
                Ответить

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