What’s the difference between input iterators and read-only forward iterators?
Because the latter are read-only, they obviously don’t satisfy requirements of output iterators. And, because of that, they’re effectively input iterators with additional guarantees (if any). The problem is, what additional guarantees?
My guess would be that forward iterators are multi-pass and input iterators are not, am I right?
Yes, input iterators are one-pass iterators. You can only iterate over them once, while forward iterators are multi-pass.
From
§24.2.3 [input.iterators] p2 (the table), pre-/postcondition column of++r:The last postcondition implies that for
a == b,++a == ++bis not required to betrue.Same clause, paragraph 3:
From
§24.2.5 [forward.iterators]