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

    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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    // https://www.opennet.ru/opennews/art.shtml?num=51508
    // Microsoft открыл код стандартной библиотеки С++, поставляемой в Visual Studio 
    
    // https://github.com/microsoft/STL/blob/7f65140761947af4ed7f9dfc11adee8c86c9e4c2/stl/inc/unordered_map#L712
    
    #if _HAS_CXX17
    template <class _Iter, class _Hasher = hash<_Guide_key_t<_Iter>>, class _Keyeq = equal_to<_Guide_key_t<_Iter>>,
        class _Alloc = allocator<_Guide_pair_t<_Iter>>,
        enable_if_t<
            conjunction_v<_Is_iterator<_Iter>, _Is_hasher<_Hasher>, negation<_Is_allocator<_Keyeq>>, _Is_allocator<_Alloc>>,
            int> = 0>
    unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc> = 0, _Hasher = _Hasher(), _Keyeq = _Keyeq(), _Alloc = _Alloc())
        ->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, _Hasher, _Keyeq, _Alloc>;
    
    template <class _Kty, class _Ty, class _Hasher = hash<_Kty>, class _Keyeq = equal_to<_Kty>,
        class _Alloc = allocator<pair<const _Kty, _Ty>>,
        enable_if_t<conjunction_v<_Is_hasher<_Hasher>, negation<_Is_allocator<_Keyeq>>, _Is_allocator<_Alloc>>, int> = 0>
    unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc> = 0, _Hasher = _Hasher(), _Keyeq = _Keyeq(),
        _Alloc = _Alloc())
        ->unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>;
    
    template <class _Iter, class _Alloc, enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_allocator<_Alloc>>, int> = 0>
    unordered_map(_Iter, _Iter, _Alloc)
        ->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, hash<_Guide_key_t<_Iter>>, equal_to<_Guide_key_t<_Iter>>,
            _Alloc>;
    
    template <class _Iter, class _Alloc, enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_allocator<_Alloc>>, int> = 0>
    unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc>, _Alloc)
        ->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, hash<_Guide_key_t<_Iter>>, equal_to<_Guide_key_t<_Iter>>,
            _Alloc>;
    
    template <class _Iter, class _Hasher, class _Alloc,
        enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_hasher<_Hasher>, _Is_allocator<_Alloc>>, int> = 0>
    unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc>, _Hasher, _Alloc)
        ->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, _Hasher, equal_to<_Guide_key_t<_Iter>>, _Alloc>;
    
    template <class _Kty, class _Ty, class _Alloc, enable_if_t<_Is_allocator<_Alloc>::value, int> = 0>
    unordered_map(initializer_list<pair<_Kty, _Ty>>, _Alloc)->unordered_map<_Kty, _Ty, hash<_Kty>, equal_to<_Kty>, _Alloc>;
    
    template <class _Kty, class _Ty, class _Alloc, enable_if_t<_Is_allocator<_Alloc>::value, int> = 0>
    unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc>, _Alloc)
        ->unordered_map<_Kty, _Ty, hash<_Kty>, equal_to<_Kty>, _Alloc>;
    
    template <class _Kty, class _Ty, class _Hasher, class _Alloc,
        enable_if_t<conjunction_v<_Is_hasher<_Hasher>, _Is_allocator<_Alloc>>, int> = 0>
    unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc>, _Hasher, _Alloc)
        ->unordered_map<_Kty, _Ty, _Hasher, equal_to<_Kty>, _Alloc>;
    #endif // _HAS_CXX17

    Ну и хуйня! Впрочем, разве могло быть иначе?

    j123123, 18 Сентября 2019

    Комментарии (174)
  2. C++ / Говнокод #25842

    +2

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    // https://habr.com/ru/post/466985/
    
    // о каррировании в крестоговне
    
    // По сути это каррирующее говно просто складывает куда-то хуйню, а потом целиком ее в функцию призывает.
    // Ну т.е. на Си можно написать дрисню вида
    
    int shit(int a, int b, int c, int d)
    {
      return a*(b+c*d);
    }
    
    // И вот каррирование такой дрисни это как если б я сделал структуру
    struct shit_arguments
    {
       int a;
       int b;
       int c;
       int d;
    };
    
    // И потом бы с конца заполнял это говно
    struct shit_arguments;
    shit_arguments.d = 13;
    shit_arguments.c = 666;
    shit_arguments.b = 1488;
    shit_arguments.a = 42;
    // и при полном заполнении этого говна просто б вызвал функцию
    // подставив туда накопившееся говно
    int somecrap = shit(shit_arguments.a, shit_arguments.b, shit_arguments.c, shit_arguments.d);
    
    // именно так эта крестовая дрисня и работает, она не может произвести частичное вычисление
    // не может сделать функцию с частично вычисленной дрисней в ней на основе частично переданной хуйни
    
    // если я например в функцию shit захочу частично подставить аргументы b,c,d как 1,2,3 то у меня не получится функции вида
    int shit_b1_c2_d3(int a)
    {
      return a*(7); // 1+2*3 = 7
    }
    // Нихуя подобного не будет. А если нихуя подобного нет, нахуй это бесполезное дерьмо вообще надо?
    // В крестах никак нельзя на основе каких-то готовых функций сгенерить
    // видоизмененные функции с частично сделанными вычислениями
    // Никакой нормальной рефлексии нет, просто какие-то тупые кривые костыли к сишечке налепили
    // И это программисты?

    j123123, 15 Сентября 2019

    Комментарии (71)
  3. C++ / Говнокод #25816

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    class BasicData {
    public:
      virtual ~BasicData() = default;
    
      virtual std::vector<std::byte> bytes() const = 0;
    
    protected:
      BasicData() = default; // <-- сабж
    };

    Я не знаю зачем (строчка 8), но походу шоб всякие дядьки не дергали что им не можно. spoiler: Только вот так или иначе не дернут.

    Elvenfighter, 09 Сентября 2019

    Комментарии (17)
  4. C++ / Говнокод #25815

    0

    1. 1
    typedef QList<QPair<QString, QPair<int, int>>> FilterVariantsType;

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

    mvngr, 09 Сентября 2019

    Комментарии (34)
  5. C++ / Говнокод #25772

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    for (const auto& item : items)
    {
      if (!item.isValid())
        continue;
      else
      {
        // 200 строк кода
      }
    }

    Что делать с такими колегами?

    Elvenfighter, 21 Августа 2019

    Комментарии (95)
  6. C++ / Говнокод #25752

    +1

    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
    namespace detail
    {
    template <typename Function, typename Tuple, std::size_t... i>
    void applyForEach(Function&& f, Tuple&& t, std::index_sequence<i...>)
    {
      (static_cast<void>(std::invoke(f, std::integral_constant<std::size_t, i>{}, std::get<i>(t))), ...);
    }
    } // namespace detail
    
    template <typename Function, typename Tuple>
    void applyForEach(Tuple&& tuple, Function&& function)
    {
      using Indexes = std::make_index_sequence<std::tuple_size_v<Tuple>>;
      detail::applyForEach(std::forward<Function>(function), std::forward<Tuple>(tuple), Indexes{});
    }

    Строка 6. Мы тут сделали синтаксис для fold expression, только вам его не дадим: у вас документов нет.

    Clang: https://wandbox.org/permlink/lNOFu1sOV9bA2LJF
    GCC: https://wandbox.org/permlink/yqeiYHTgZOz9NkkJ

    Elvenfighter, 07 Августа 2019

    Комментарии (8)
  7. C++ / Говнокод #25741

    +1

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        bool b;
        cin >> b;
    
        switch (b) {
        case true:
            cout << "TRUE" << endl;
            break;
        case false:
            cout << "FALSE" << endl;
            break;
        default:
            cout << "WHAT???" << endl;
            break;
        }
    
        return 0;
    }

    Данный код с компилятором MSVC2017 64bit при вводе значения "true" (текстом) выводит в консоль "WHAT???"

    mvngr, 30 Июля 2019

    Комментарии (100)
  8. C++ / Говнокод #25695

    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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    std::string makeFormContent(const std::string & album,
                                const std::wstring & filename,
                                const std::string & boundary)
    {
        static const std::string DELIM = "\r\n";
        std::ostringstream ss;
        std::ifstream file(filename, std::ios::binary);
    
    
        ss << boundary << DELIM;
        ss << "Content-Disposition: form-data; name=\"album\"" << DELIM << DELIM;
        ss << album << DELIM;
    
        ss << boundary << DELIM;
        ss << "Content-Disposition: form-data; name=\"image\"; filename=\"image\"" << DELIM << DELIM;
        ss << file.rdbuf() << DELIM;
    
        ss << boundary << DELIM << "--";
    
        return ss.str();
    }

    Заебали. Куча HTTP-либ под кресты, а банально сделать POST-запрос с multipart/form-data без кучи ебли нельзя. Приходится самому составлять, лол.

    Именно поэтому я за «requests.post(url, data=data, files=files)».

    gost, 02 Июля 2019

    Комментарии (120)
  9. C++ / Говнокод #25634

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    std::queue<char *> outQueue2;
    std::lock_guard<std::mutex> lock(mtx);
    mtx.lock();
    if (outQueue.size() > 0) {
    std::swap(outQueue2, outQueue);
    outQueue = {};
    }
    std::lock_guard<std::mutex> unlock(mtx);

    со слов автора:
    у меня 2 исходящие очереди
    в одну соседний поток ложит
    потом приходит тик
    врубает симафор
    копирует по-бырому очередь
    и чистит её
    дальше отпускает поток
    чтобы не ждать
    пока всё отправится
    и спокойно в соседнем потоке уже начинает BYtestream...
    и всё такое
    разьве не так делают в домах парижу?

    heh1137, 22 Мая 2019

    Комментарии (68)
  10. C++ / Говнокод #25618

    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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    #include <stdio.h>
    #include <conio.h>
    #include <iostream>
    // -------------------------------------------
    #define belugina0 std::wstring("нельзя писать сервера на js")
    #define belugina1 std::wstring("js это обертка для html")
    #define belugina2 std::wstring("Вектор это не динамический массив")
    #define belugina3 std::wstring("-Размер инта? Ответ: "Ну два" ")
    #define belugina4 std::wstring("Бинарным поиском  можно найти максимальное количество минимальных элементов")
    #define belugina5 std::wstring("Бинарным поиском  можно найти сумму элементов массива")
    #define belugina6 std::wstring("Бинарным поиском  можно найти среднее арифметическое массива") 
    #define belugina7 std::wstring("Операцию "перечисления"  это  - когда массив  содержит числа, принадлежащие обоим массивам")
    // наркотики зло
    void main ()
    {
    
    int n; // количество вершин
    int **G;// исходный граф
    int **H; // матрица списка ребер с весом
    int **K; /*матрица, отмечающая принадлежность
    вершины компоненте*/
    int **T; // матрица остовного дерева
    int **L; // список ребер с ценами минимального дерева
    }

    Список моих цитат
    Краткость сестра таланта.

    dethless, 19 Мая 2019

    Комментарии (126)