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

    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
    // https://www.linux.org.ru/forum/development/16099510/
    // c++ шаблон zip-like итератора? 
    // В python есть крайне полезные функции zip, enumerate, range. Мне нужно что-то подобное для cpp/cuda (c++17).
    // Если c range и enumerate более менее понятно, то как реализовать zip не соображу. Семантически это должно быть variadic template
    
    template<typename t, typename... ts>
    class zip : zip<ts...>{
    	zip(t arg, ts... args);
    	struct iterator;
    	begin() -> iterator;
    	end()   -> iterator;
    };
    
    // Где итератор возвращает кортеж ссылок на элементы что с контейнерами можно было работать как:
    
    for(auto [x,y,z] : zip(xs,ys,zs))
    
    // Рекурсивное наследование должно быть ограничено тривиальным случаем одного аргумента.
    //Но, кажется, я думаю не в правильную сторону, в частности, не соображу как рекурсивно вывести тип возвращаемых итератором кортежей:
    
    using ret_type = tuple<decltype(begin(declval<t>())), decltype(???)>

    Блять, как всё сложно. Какие-то рекурсивные выводы типов возвращаемых итераторов кортежей блядь.

    Вот если б вместо ущербного триждыблядского типодрочерского шаблоноговна сделали что-то помощнее...

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

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

    • Переведи на "PHP".
      Ответить
      • https://stackoverflow.com/questions/2815162/is-there-a-php-function-like-pythons-zip
        Ответить
    • https://www.linux.org.ru/forum/development/16099510?cid=16099996

      > Если мы говорим про инстроспекцию/кодогенерацию - это разрабатывается в С++. Никто в мире до сих пор этого не делал и не сделал. Т.е. нужно не просто реализовать фичу, а в принципе создать её. Причём в языке с самой мощной системой типов и синтаксическими возможностями.

      Очередное мощное заявление Царя.
      Ответить
      • Что значит "Никто в мире до сих пор этого не делал и не сделал"? А что насчет LISP?

        "Причём в языке с самой мощной системой типов и синтаксическими возможностями." - какой в пизду самой мощной системой типов и синтаксическими возможностями? Кресты - слой зловонного дерьмища, намазанного на сишку криворукими макаками. Вывод типов по Хиндли-Милнеру пусть в крестах покажет
        Ответить
    • в твою сишку не довезли boost::combine или boost::zip_iterator, вот ты и бесишься
      Ответить
      • Циклов хватит всем.
        Ответить
      • Я против буста. Да вообще против библиотек, и вообще C++. Да и вообще против программирования, я уже говорил, что в компах не разбираюсь.
        Ответить
        • ну так сам напиши, если так надо
          тем более в буусте, насколько я бегло смотрел, проблема в том, чтобы зипуемые коллекции были одинаковой длины - типа если неодинаковые, тогда сначала померяйте все, потом передавайте слайсы (иначе типа ниификтивный луп из семи залуп будет)

          и есть ещё отдельная либа ranges-v3, в которой (вероятно) нет и последней проблемы
          Ответить
    • Переходи на D.
      Ответить
      • Эм. Совет гепатитнику?
        Ответить
      • В языке "D" там в миксинах дрочево с непосредственно текстом (кодом), а надо чтоб с AST, надо чтоб гомоиконность!
        Ответить

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