struct output_iterator_tag {};| property | valid expressions |
|---|---|
| Is copy-constructible, copy-assignable and destructible | X b(a); |
| Can be dereferenced as an lvalue (if in a dereferenceable state). It shall only be dereferenced as the left-side of an assignment statement. Once dereferenced, its iterator value may no longer be dereferenceable. | *a = t |
| Can be incremented. | ++a |
| property | valid expressions |
|---|---|
| Is copy-constructible, copy-assignable and destructible | X b(a); |
| Can be dereferenced as an lvalue (if in a dereferenceable state). It shall only be dereferenced as the left-side of an assignment statement. Once dereferenced, its iterator value may no longer be dereferenceable. | *a = t |
| Can be incremented. | ++a |
| Lvalues are swappable. | swap(a,b) |