In _GLIBCXX_DEBUG builds, potentially implicitly enabled by LLVM_ENABLE_EXPENSIVE_CHECKS, std::set<A, B>::iterator and std::set<A, C>::iterator are distinct types that are not interconvertible. This change aligns the iterator types with the set types.
For ADT, this was added by D112052. For CSSPGO, this was added by D99146. Adding the authors/reviewers of those revisions in case they want to suggest a different way of fixing this.
nit: using iterator = edges::iterator ?