erik.pilkington added inline comments.

================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:4111
+  "candidate template ignored: %select{template is not a function template"
+  "|is not a member of the enclosing namespace}0">;
 
----------------
rjmccall wrote:
> Your first explanation has a subject, but the second doesn't.  And I think it 
> would be nice to suggest adding explicit scope qualification in the second 
> case.
> 
> I assume non-templates have previously been filtered out?
Oh, no, good point. A non-template can still get into here:
```
namespace ns1 { template <class T> struct foo {}; }
namespace ns2 { int foo() {} } // bad diag: template is not a function template
using ns1::foo;
using ns2::foo;

template <class T> class A {
    friend void foo<T>() {}
};
```

I added this to the testcases.


https://reviews.llvm.org/D49085



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to