I'm writing some kind of graph algorithm. It should be able to support all vertex identifier types that are std::is_default_constructible<T> && std::three_way_comparable<T> (But the main use cases are int32_t, int64_t, std::string and std::string_view, I don't think there will be many other use cases)
To get to the point, the algorithm needs to add supersource or supersink vertex to the graph, which must be different from all vertices present in the graph.
ex) Let DirectedGraph<int> g be a graph, with vertices set is given by {1, 3, 2, 5, 6}. Any int which is not in the vertices set will be fine. If g is DirectedGraph<std::string>, and vertices are {"US", "China", "Japan", "Korea"}, then anything like "supersource", "USUS" will be fine
Is there a simple way to provide an identifier different from all existing vertices? Just supporting integer types and string types will be probably okay.