- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 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(???)>
Блять, как всё сложно. Какие-то рекурсивные выводы типов возвращаемых итераторов кортежей блядь.
Вот если б вместо ущербного триждыблядского типодрочерского шаблоноговна сделали что-то помощнее...
OCETuHCKuu_nemyx 11.01.2021 17:41 # 0
j123123 11.01.2021 17:44 # 0
j123123 11.01.2021 17:50 # 0
> Если мы говорим про инстроспекцию/кодогенерацию - это разрабатывается в С++. Никто в мире до сих пор этого не делал и не сделал. Т.е. нужно не просто реализовать фичу, а в принципе создать её. Причём в языке с самой мощной системой типов и синтаксическими возможностями.
Очередное мощное заявление Царя.
j123123 11.01.2021 17:52 # 0
"Причём в языке с самой мощной системой типов и синтаксическими возможностями." - какой в пизду самой мощной системой типов и синтаксическими возможностями? Кресты - слой зловонного дерьмища, намазанного на сишку криворукими макаками. Вывод типов по Хиндли-Милнеру пусть в крестах покажет
defecate-plusplus 11.01.2021 18:03 # 0
j123123 11.01.2021 18:24 # 0
defecatinho 11.01.2021 18:32 # 0
defecate-plusplus 11.01.2021 18:36 # 0
тем более в буусте, насколько я бегло смотрел, проблема в том, чтобы зипуемые коллекции были одинаковой длины - типа если неодинаковые, тогда сначала померяйте все, потом передавайте слайсы (иначе типа ниификтивный луп из семи залуп будет)
и есть ещё отдельная либа ranges-v3, в которой (вероятно) нет и последней проблемы
GDMaster 13.01.2021 14:32 # 0
CBuHOKYP 13.01.2021 18:52 # 0
j123123 14.01.2021 11:09 # 0