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

    +10

    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
    template <int N> void f(int v)
    {
        (void *)v;
    }
    
    int main()
    {
        int s = 123;
        int k = 1234;
        
        f<11>(k);
        s<11>(k);
        
        return 0;
    }

    Плюсы, такие плюсы.

    Запостил: CriDos, 07 Декабря 2015

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

    • Звёздочка в 3 строке не нужна.
      Ответить
      • Забывать уже начинаю:(
        Привык к макросу Q_UNUSED...
        Ответить
        • Я за собой заметил, что Qльтя весьма размягчает мозг, особенно, если добраться до QScript и QML.
          Надо как-то форму поддерживать, что ли...
          Ответить
    • так а где лопата?
      Ответить
      • Здесь!
        Ответить
      • Видимо, тут:
        s<11>(k);

        Кстати, почему это работает? Такой шаблон же никто не определял.
        Ответить
        • о блин проглядел.

          > Кстати, почему это работает? Такой шаблон же никто не определял.

          какой такой шаблон??
          s = 123;
          k = 1234;
          s < 11; // == false;
          false > k; // == false;
          Ответить
          • > какой такой шаблон??
            Рядом был шаблон, из-за него у меня всё слилось в одно пятно времени компиляции.
            Ответить
            • ну типа как и у меня, пока ты пальцем не тыкнул.

              чудеса человеческого восприятия. генерализация, интерпретация и упрощение.
              Ответить
          • Какой идиот придумал в качестве скобок шаблона использовать символы, уже использующиеся в языке как операторы?
            Ответить
            • А в c++11 идею ещё немного развили, и >> парсится и как оператор >> и как две закрывающих скобки от шаблонов...
              Ответить
            • Ну а какой идиот в сишечке слово static перегрузил?
              Ответить
      • В контекстно-зависимом парсинге.

        f<11>(k) это вызов шаблонной функции, а s<11>(k) это джва оператора.

        P.S. Самый прикол, что можно написать код, парсинг которого будет зависеть от значения константы.
        Ответить
        • надо развить синтаксис, чтобы можно было перегружать произвольные последовательности символов, при этом задавая приоритет (a la ключевое слово infix из хаски, только для стадии токенизации)
          чтобы подключение нового модуля с новыми именами с большой вероятностью полностью изменяло смысл всего кода
          Ответить
          • Это уже не ЯП а ФЛЮГЕГЕХАЙМЕН!
            Ответить
          • Подключил модуль, и точка стала уже неточкой
            Ответить
            • Точка стала заточкой и зарезала весь код.
              Ответить
          • ОВЕРРАЙДИНГ МИССИНГ ВАЙТСПЕЙС!!!

            чтобы xy понималось как x*y как в математике
            Ответить
        • А ты видел компил-тайм счетчик?
          Ответить
        • Значения, или таки типа?
          Ответить
    • Только после комментариев догнал, в чем дело
      Ответить
      • А я долго смотрел на код, и, наконец, воскликнул "Ах тыж ебанный ты нахуй!"
        Ответить
    • Это, конечно, не оператор "длинная стрелка", но тоже весьма забавный майндфак. Вэн ю си ит...
      // enum { uc = 11 };
      Ответить
    • си плюс плюс как презерватив
      все ругают, но все пользуются

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

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