..., iterators, and any other type providing these basic arithmetic operations.
This came up in the C++ standards committee meeting, and it seemed like
a useful construct that LLVM might want as well, and I wanted to
understand how easily we could solve it. I suspect this can be used to
write simpler counting loops even in LLVM along the lines of:
for (int i : seq(0, v.size())) { ... };
As part of this, I had to fix the lack of a proxy object returned from
the operator[] in our iterator facade.