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) |