From 1f561c14edb9c2f54d5f4d0ad0f4b2f4bb6ece5e Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sun, 2 Aug 2009 23:46:29 +0000 Subject: [PATCH] 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 --- include/clang/Basic/DiagnosticSemaKinds.td | 4 ++++ lib/Sema/SemaOverload.cpp | 6 ++++-- 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 -- 2.40.0