https://gcc.gnu.org/g:6db6adbe9ccab6f673a3be15caad5d7ad783002a

commit r16-9115-g6db6adbe9ccab6f673a3be15caad5d7ad783002a
Author: Marek Polacek <[email protected]>
Date:   Fri Jun 12 15:46:10 2026 -0400

    c++: bogus error with meta::members_of [PR125770]
    
    mark_used produces the
    use of built-in parameter pack '__integer_pack' outside of a template
    error even when called with tf_none (in this case, from
    resolve_type_of_reflected_decl).
    
    I played with the idea of skipping all fndecl_built_in_p functions
    in resolve_type_of_reflected_decl but it doesn't seem to make any
    reasonable difference on compile time.
    
            PR c++/125770
    
    gcc/cp/ChangeLog:
    
            * decl2.cc (mark_used): Check complain & tf_error before giving
            an error.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/reflect/members_of15.C: New test.
    
    Reviewed-by: Jason Merrill <[email protected]>
    (cherry picked from commit 73c9662616a7de98cb740c36e5df006afb26c1d1)

Diff:
---
 gcc/cp/decl2.cc                             | 5 +++--
 gcc/testsuite/g++.dg/reflect/members_of15.C | 9 +++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/decl2.cc b/gcc/cp/decl2.cc
index 351e1c3766fa..8bd893db7753 100644
--- a/gcc/cp/decl2.cc
+++ b/gcc/cp/decl2.cc
@@ -6806,8 +6806,9 @@ mark_used (tree decl, tsubst_flags_t complain /* = 
tf_warning_or_error */)
 
   if (builtin_pack_fn_p (decl))
     {
-      error ("use of built-in parameter pack %qD outside of a template",
-            DECL_NAME (decl));
+      if (complain & tf_error)
+       error ("use of built-in parameter pack %qD outside of a template",
+              DECL_NAME (decl));
       return false;
     }
 
diff --git a/gcc/testsuite/g++.dg/reflect/members_of15.C 
b/gcc/testsuite/g++.dg/reflect/members_of15.C
new file mode 100644
index 000000000000..ef124f87e5c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/members_of15.C
@@ -0,0 +1,9 @@
+// PR c++/125770
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+#include <meta>
+
+consteval {
+    members_of(^^::, std::meta::access_context::unchecked());
+}

Reply via email to