See: http://eel.is/c++draft/#ranges
Given two C++2a ranges (as in objects that conform to the ranges concept of the ranges library) a and b, of equal length, is there a way to zip them together such that:
for (const auto& [a,b] : zip(a,b))
does what you expect? That is, it returns a range that has something destructurable binding pairs:
(a.begin(), b.begin())
(a.begin()+1, b.begin()+1)
(a.begin()+2, b.begin()+2)
...
(a.end()-1, b.end()-1)