================
@@ -0,0 +1,32 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s
+
+namespace GH49093 {
+  class B {
+  public:
+    static int a() { return 0; } // expected-note {{member is declared here}}
+    decltype(a< 0 >(0)) test;    // expected-error {{member 'a' used before 
its declaration}}
----------------
erichkeane wrote:

I'm not explicitly saying that (hah!).  But the behavior you have here is not 
correct.  First, I still don't see why it would say 'used before its 
declaration', when its declaration is right above it.  Second, SHOULD say 
something like, "non template used with template args, what are you doing?" 
sorta error.  

As far as recovery, it could/should probably treat it as if you HADN'T used the 
template arguments and continue, so any recovery (for the type reference?) 
should be based on the found-but-not-template type.

https://github.com/llvm/llvm-project/pull/107786
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to