In the C++ code below, could somebody explain what each of these lines mean in the private section? I have tried looking it up, but I still cannot figure out what they do. 
I understand that using is the equivalent to typedef in C.  So:
using the_graph = graph<T_node, T_edge1, T_allocator, T_size>;
Means that you use the_graph. 
But, in this instance, why would you call the scope resolution operator on it?
I don't think that it is any of the 4 methods described here.
template <class T_node, class T_edge1, class T_edge2, class T_allocator, class T_size = uint32_t>
class graph : private virtual graph<T_node, T_edge1, T_allocator, T_size>, private virtual graph<T_node, T_edge2, T_allocator, T_size>
{
public:
    using the_graph = graph<T_node, T_edge1, T_allocator, T_size>;
private:
    using typename the_graph::node_list_iterator;
    using the_graph::node_begin;
};