Usar plantilla actual como parámetro de plantilla para uno de los parámetros de plantilla

Estoy tratando de hacer una estructura gráfica genérica, pero me encuentro con esta dependencia circular entre vértices y bordes. Defino mis clases Vertex y Edge así: template<typename EdgeType> struct Vertex { std::vector<EdgeType> successors; }; template<typename EdgeCostType,...