diff options
| author | Jakub Jelinek <jakub@redhat.com> | 2026-02-04 12:30:42 +0100 |
|---|---|---|
| committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2026-02-04 12:30:42 +0100 |
| commit | 8bc8aaed6c22fac5f66be11e92001665c20716ef (patch) | |
| tree | 01159b6a3157716c0057e4ef5d86273afc0ae3bd /libstdc++-v3/include/experimental/array | |
| parent | 75930efa22fb722e734307332a81ed1505178ae6 (diff) | |
| download | gcc-master.zip gcc-master.tar.gz gcc-master.tar.bz2 | |
eval_parameters_of was trying to share 3 lines of code between the
function declaration and function type cases, but got it wrong in
multiple ways for the latter. One thing is that we should override
reflect_kind only for the function decl case to REFLECT_PARM, there
we need to differentiate function parameter reflection vs. variable
reflection, for function type it is just type. Another one is that
we iterate over PARM_DECLs through DECL_CHAIN in the function decl
case, but for types we iterate over the TREE_LIST nodes and the
type is only TREE_VALUE of that.
And last, but am not sure about that, maybe
https://eel.is/c++draft/meta.reflection#queries-62.2 should be clarified,
I think we want to apply dealias. We have notes like
https://eel.is/c++draft/meta.reflection#queries-note-7
https://eel.is/c++draft/meta.reflection#traits-5
but those don't apply to type_of or parameters_of. And I think there was
an agreement that meta fns which return reflection of a type don't return
type aliases, but can't see it written explicitly except for the traits.
2026-02-04 Jakub Jelinek <jakub@redhat.com>
PR c++/123913
PR c++/123964
* reflect.cc (eval_parameters_of): Fix up handling of function
types.
* g++.dg/reflect/parameters_of7.C: New test.
Diffstat (limited to 'libstdc++-v3/include/experimental/array')
0 files changed, 0 insertions, 0 deletions
