Software engineering technique behind the GraphTraits implementation?

Hi Fellows,

What is the design pattern behind GraphTraits? Any C++ reference explaining this pattern? From the look of the code, it passes me as a very complicated design. For example, how does the partial specialization makes the inverse of an inverse falls back to the original graph:

        template<class T>
        struct GraphTraits<Inverse<Inverse<T> > > {
                         ...
        }