...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A class or builtin type X models the Random Access Traversal concept if the following expressions are valid and respect the stated semantics. In the table below, Distance is iterator_traits<X>::difference_type and n represents a constant object of type Distance.
Random Access Traversal Iterator Requirements (in addition to Bidirectional Traversal)  

Expression  Return Type  Operational Semantics  Assertion/ Precondition 
r += n  X&  { Distance m = n; if (m >= 0) while (m) ++r; else while (m++) r; return r; } 

a + n, n + a  X  { X tmp = a; return tmp += n; }  
r = n  X&  return r += n  
a  n  X  { X tmp = a; return tmp = n; }  
b  a  Distance  a < b ? distance(a,b) : distance(b,a)  pre: there exists a value n of Distance such that a + n == b. b == a + (b  a). 
a[n]  convertible to T  *(a + n)  pre: a is a Readable Iterator 
a[n] = v  convertible to T  *(a + n) = v  pre: a is a Writable iterator 
a < b  convertible to bool  b  a > 0  < is a total ordering relation 
a > b  convertible to bool  b < a  > is a total ordering relation 
a >= b  convertible to bool  !(a < b)  
a <= b  convertible to bool  !(a > b)  
iterator_traversal<X>::type  Convertible to random_access_traversal_tag 