Bidirectional_iterator_tag is an empty class: it has no member functions,
member variables, or nested types. It is used solely as a "tag": a
representation of the Bidirectional Iterator concept within the C++ type
system. Specifically, it is used as a return value for the function
iterator_category. Iterator_category takes a single
argument, an iterator, and returns an object whose type depends on the
iterator's category. Iterator_category's return value is of
type bidirectional_iterator_tag if its argument is a Bidirectional Iterator.