struct input_iterator_tag {};| property | valid expressions |
|---|---|
| Is copy-constructible, copy-assignable and destructible | X b(a); |
| Can be compared for equivalence using the equality/inequality operators (meaningful if both iterators are be in domain). | a == b |
| Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
| Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. The previous iterator value is not required to be dereferenceable after the increase. | ++a |
| Its value type does not need to be assignable | t = u not required |
| property | valid expressions |
|---|---|
| Is copy-constructible, copy-assignable and destructible | X b(a); |
| Can be compared for equivalence using the equality/inequality operators (meaningful if both iterators are be in domain). | a == b |
| Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
| Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. The previous iterator value is not required to be dereferenceable after the increase. | ++a |
| Its value type does not need to be assignable | t = u not required |
| Lvalues are swappable. | swap(a,b) |