Added GraphViz visualization of C++ inheritance hierarchies. 

Factored the QualTypeOrdering predicate into its own header
(TypeOrdering.h), now that it is used in two places.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58001 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 7c4444f..f17875b 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -14,13 +14,13 @@
 #include "Sema.h"
 #include "clang/AST/ASTConsumer.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/TypeOrdering.h"
 #include "clang/AST/StmtVisitor.h"
 #include "clang/Lex/Preprocessor.h"
 #include "clang/Basic/Diagnostic.h"
 #include "clang/Parse/DeclSpec.h"
 #include "llvm/Support/Compiler.h"
 #include <algorithm> // for std::equal
-#include <functional>
 #include <map>
 
 using namespace clang;
@@ -306,14 +306,6 @@
   return BS;
 }
 
-/// QualTypeOrder - Function object that provides a total ordering on
-/// QualType values.
-struct QualTypeOrdering : std::binary_function<QualType, QualType, bool> {
-  bool operator()(QualType T1, QualType T2) {
-    return std::less<void*>()(T1.getAsOpaquePtr(), T2.getAsOpaquePtr());
-  }
-};
-
 /// ActOnBaseSpecifiers - Attach the given base specifiers to the
 /// class, after checking whether there are any duplicate base
 /// classes.