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

    +51

    1. 1
    auto a = []{return 1;}();

    http://rextester.com/NQVDP75721

    Запостил: LispGovno, 08 Января 2015

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

    • Как вам? Помоему удобно.
      Ответить
    • Кмк, нормально, только не с числовыми константами.
      Некоторые так пишут, когда хотять проинициализировать какой-нибудь const vector чем-то посложнее списка литералов.
      Ответить
      • constexpr, не?
        Ответить
        • constexpr же вроде только с POD-ами работать может

          Реквестую пример. Хочу инициализировать константный вектор первой сотней простых чисел.
          Ответить
          • Ну не простые числа, и не вектор, но что-то такое хотелось?

            https://github.com/bormand/ct_aes
            Ответить
            • P.S. Т.е. теоретически то можно найти первые 100 простых чисел, раз я там массивами спокойно оперировал в constexpr. Но код будет похож на такой пиздец, что лучше так не делать. И компилиться будет по полдня.
              Ответить
              • Да, я имел в виду инициализацию в рантайме, а не в компайл-тайме. К примеру, размер вектора может зависеть от окружения.
                Но я лично предпочитаю написать отдельную функцию, а не пихать лямбды в каждую щель.
                Ответить
                • > инициализацию в рантайме
                  А, ясно. Но ведь это и без всяких с++11 вполне решалось отдельной функцией.

                  > Но я лично предпочитаю написать отдельную функцию
                  +1. Как я и писал в соседнем треде: "хоть крестовик и приходит к лямбдам и асинхронке через 5 лет, зато он морально подготовлен и не пихает все это в каждую щель".

                  P.S. Компайлтайм в крестах пока что уёбищен. Он стал поприятней, чем раньше, но по-настоящему юзабельным он станет тогда, когда разрешат нормальные чистые функции, а не один-ретурн-с-одним-оператором.
                  Ответить
                  • В С++14 уже можно. Ветвления, циклы, рекурсия...
                    Ответить
                  • Так зато налёт чисто функцианальных языков: только рекурсия и паттерн-матчинг тернарники, только хардкор.

                    >но по-настоящему юзабельным он станет тогда, когда разрешат нормальные чистые функции, а не один-ретурн-с-одним-оператором.
                    Императивную питушню? Это же идололохический шаг на зад.
                    Ответить
                    • > шаг на зад
                      один шаг на зад человека - огромный шаг для человечества
                      Ответить
                      • Прекратите высаживать астронавтов на чОрной стороне Луны, а то придёт Милонов!
                        Ответить
                        • Я уже тут!
                          И буду тут!
                          Прихожу сам!
                          Меня не зовут!
                          Ответить
            • util::shift(std::array<uint8_t, 208> {0}, key)))))))))))))))))))))));

              лисп говно
              Ответить
              • // key schedule (i'm too lazy to optimize this shit
                // so enjoy tons of copy & paste and lispish smiles ))))))))
                Ответить
        • constexpr лямбда?
          Ответить
    • Напомнило
      https://qt.gitorious.org/qt/ritts-qtbase/source/473e37b1e39ad9e71e9e43e7f6529189a4a98f87:src/corelib/tools/qstring.h#L133
      (short) http://tinyurl.com/nxjzgtt
      Ответить
    • На самом деле мне приглянулось то, что можно опустить круглые скобки после квадратных
      Ответить
    • и как это работает?
      Ответить
      • Просто лямбда и её вызов.
        Ответить
        • а параметры определяются по тому, с чем вызывают?
          а возвращаемый тип - по ретурну или по левой части присваивания?
          туплю, там же авто
          Ответить
          • Параметров тупо нет, иначе скобочки бы не дали опустить. Возвращаемый тип по ретурну, да.
            Ответить

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