Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Lvalue Iterator Concept

The Lvalue Iterator concept adds the requirement that the return type of operator* type be a reference to the value type of the iterator.

Lvalue Iterator Requirements
Expression Return Type Note/Assertion
*a T& T is cv iterator_traits<X>::value_type where cv is an optional cv-qualification. pre: a is dereferenceable. If a == b then *a is equivalent to *b.