Implement partial ordering of function template specializations 
(C++ [temp.func.order]). 

llvm-svn: 81777
diff --git a/clang/lib/Sema/SemaTemplate.h b/clang/lib/Sema/SemaTemplate.h
index 59bb542..2bfb25a 100644
--- a/clang/lib/Sema/SemaTemplate.h
+++ b/clang/lib/Sema/SemaTemplate.h
@@ -86,6 +86,19 @@
       return *TemplateArgumentLists.front();
     }
   };
+  
+  /// \brief The context in which partial ordering of function templates occurs.
+  enum TemplatePartialOrderingContext {
+    /// \brief Partial ordering of function templates for a function call.
+    TPOC_Call,
+    /// \brief Partial ordering of function templates for a call to a 
+    /// conversion function.
+    TPOC_Conversion,
+    /// \brief Partial ordering of function templates in other contexts, e.g.,
+    /// taking the address of a function template or matching a function 
+    /// template specialization to a function template.
+    TPOC_Other
+  };
 }
 
 #endif // LLVM_CLANG_SEMA_TEMPLATE_H