¿Por qué la función sort () causa un error de compilación cuando se usa para un conjunto de objetos de clase?

Traté de sobrecargar< operador para la clase y llamó a la función de la siguiente manera:

bool Edge::operator<(Edge const & e) const {
    return this->GetCost() < e.GetCost();
}

en main ()

sort(edge_set.begin(),edge_set.end());

Además, también intenté escribir una función de comparación simple para los objetos, definida en main.cpp e intenté invocarsort(), sin embargo volvió a fallar:

bool edge_comparator(Edge& e1, Edge& e2){
    return (e1.GetCost() < e2.GetCost());
}

en main ()

sort(edge_set.begin(),edge_set.end(), edge_comparator);

Me sale un error de compilación por lo que he intentado. ¿Qué estoy haciendo mal aquí? ¿Cómo puedo ordenar el conjunto de objetos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta