...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::type_erasure::bidirectional_iterator
// In header: <boost/type_erasure/iterator.hpp> template<typename T = _self, typename Reference = boost::use_default, typename DifferenceType = std::ptrdiff_t> struct bidirectional_iterator : public boost::type_erasure::iterator< boost::bidirectional_traversal_tag, T, Reference, DifferenceType > { };