aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-08-02 23:46:29 +0000
committerDouglas Gregor <dgregor@apple.com>2009-08-02 23:46:29 +0000
commit1f561c14edb9c2f54d5f4d0ad0f4b2f4bb6ece5e (patch)
tree030401577afde3d55fd021540c765425fd74ede8
parent37d93e9252026d4fb836d9c05d0122a2d46e56be (diff)
Produce a warning that partial ordering of function templates is not yet supported
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77928 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/DiagnosticSemaKinds.td4
-rw-r--r--lib/Sema/SemaOverload.cpp6
2 files changed, 8 insertions, 2 deletions
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index 25e331721a..a4e8f56954 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -905,6 +905,10 @@ def unsup_template_partial_spec_ordering : Error<
"partial ordering of class template partial specializations is not yet "
"supported">;
+def unsup_function_template_partial_ordering : Warning<
+ "partial ordering of function templates is unsupported; overload resolution "
+ "may result in an ambiguity that would not occur with a conforming compiler">;
+
// C++ Template Instantiation
def err_template_recursion_depth_exceeded : Error<
"recursive template instantiation exceeded maximum depth of %0">,
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index 0880d1073d..75ca531cbc 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -3496,8 +3496,10 @@ Sema::isBetterOverloadCandidate(const OverloadCandidate& Cand1,
// template for F1 is more specialized than the template for F2
// according to the partial ordering rules described in 14.5.5.2, or,
// if not that,
-
- // FIXME: Implement partial ordering of function templates.
+ if (Cand1.Function && Cand1.Function->getPrimaryTemplate() &&
+ Cand2.Function && Cand2.Function->getPrimaryTemplate())
+ // FIXME: Implement partial ordering of function templates.
+ Diag(SourceLocation(), diag::unsup_function_template_partial_ordering);
// -- the context is an initialization by user-defined conversion
// (see 8.5, 13.3.1.5) and the standard conversion sequence