https://gcc.gnu.org/g:47b62be9cace0e2e124650f331788d52ffd5fb25

commit r16-4-g47b62be9cace0e2e124650f331788d52ffd5fb25
Author: Jason Merrill <ja...@redhat.com>
Date:   Tue Jan 28 17:46:59 2025 -0500

    c++: 'requires' diagnostic before C++20
    
    We were giving a generic "not declared" error for a requires-expression
    without concepts enabled; we can do better.
    
    gcc/cp/ChangeLog:
    
            * lex.cc (unqualified_name_lookup_error): Handle 'requires' better.

Diff:
---
 gcc/cp/lex.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/cp/lex.cc b/gcc/cp/lex.cc
index c12b084aad99..12af81ed078c 100644
--- a/gcc/cp/lex.cc
+++ b/gcc/cp/lex.cc
@@ -749,6 +749,9 @@ unqualified_name_lookup_error (tree name, location_t loc)
 
   if (IDENTIFIER_ANY_OP_P (name))
     error_at (loc, "%qD not defined", name);
+  else if (!flag_concepts && name == ridpointers[(int)RID_REQUIRES])
+    error_at (loc, "%<requires%> only available with %<-std=c++20%> or "
+             "%<-fconcepts%>");
   else
     {
       if (!objc_diagnose_private_ivar (name))

Reply via email to