# Single Pass Iterator Concept

A class or built-in type `X` models the Single Pass Iterator concept if the following expressions are valid and respect the stated semantics.

Single Pass Iterator Requirements (in addition to Incrementable Iterator and Equality Comparable)
Expression | Return Type | Assertion/Semantics / Pre-/Post-condition
--- | --- | ---
`++r` | `X&` | pre: `r` is dereferenceable; post: `r` is dereferenceable or `r` is past-the-end
`a == b` | convertible to `bool` | `==` is an equivalence relation over its domain
`a != b` | convertible to `bool` | `!(a == b)`
`iterator_traversal<X>::type` | Convertible to `single_pass_traversal_tag` |