This file provides a collection of function (or more generally, callable) type erasure utilities supplementing those provided by the standard library in <function>.
This builds on the llvm/ADT/GraphTraits.h file to find the strongly connected components (SCCs) of a graph in O(N+E) time using Tarjan's DFS algorithm.