21static_assert(std::is_base_of<std::bidirectional_iterator_tag, typename tr::iterator_category>::value, "Templated type must be a random access iterator");
22public:
23// A full implementation of this idea would allow for any input
24// iterator type. For this version, just require at least bidirectional