ordered_adaptor_iterator(void):
     container(NULL), current_index(std::numeric_limits<size_t>::max()),
     unvisited_nodes(compare_by_heap_value(NULL, ValueCompare()))
 {}
 ordered_adaptor_iterator(const ContainerType * container, ValueCompare const & cmp):
     container(container), current_index(container->size()),
     unvisited_nodes(compare_by_heap_value(container, ValueCompare()))
 {}
 ordered_adaptor_iterator(size_t initial_index, const ContainerType * container, ValueCompare const & cmp):
     container(container), current_index(initial_index),
     unvisited_nodes(compare_by_heap_value(container, cmp))
 {
     discover_nodes(initial_index);
 }