cpp/iterator/bidirectional iterator

The concept refines  by adding the ability to move an iterator backward.

Semantic requirements
A bidirectional iterator is said to be decrementable if and only if there exists some  such that.

is modeled only if all the concepts it subsumes are modeled, and given two objects and  of type :
 * If is decrementable,  is in the domain of the expressions  and.
 * Pre-decrement yields an lvalue that refers to the operand: ;
 * Post-decrement yields the previous value of the operand: if, then.
 * Post-decrement and pre-decrement perform the same modification on its operand: If, then after evaluating both and ,  still holds.
 * Increment and decrement are inverses of each other:
 * If is incrementable and, then.
 * If is decrementable and, then.