On Mon, Nov 17, 2025 at 01:01:14PM +0100, Jakub Jelinek wrote: > Hi! > > Working virtually out of Baker Island. > > The following patch attempts to implement CWG1670. > > Tested on x86_64-linux, ok for trunk? > > 2025-11-17 Jakub Jelinek <[email protected]> > > gcc/cp/ > * parser.cc (cp_parser_conversion_type_id): Implement C++ DR1670 > - auto as conversion-type-id. Pedwarn on conversion operators > with placeholder return type. > gcc/testsuite/ > * g++.dg/DRs/dr1670-1.C: New test. > * g++.dg/DRs/dr1670-2.C: New test. > * g++.dg/DRs/dr1670-3.C: New test. > * g++.dg/modules/auto-1_a.H: Use dg-options instead of > dg-additional-options. > * g++.dg/modules/auto-1_b.C: Likewise. > * g++.dg/cpp1y/auto-fn12.C: Likewise. > * g++.dg/cpp1y/auto-fn13.C: Add empty dg-options. > * g++.dg/cpp1y/auto-fn22.C: Likewise. > * g++.dg/cpp1y/constexpr-assert2.C: Likewise. > * g++.dg/cpp1y/auto-fn44.C: Add dg-options -Wpedantic and expect > further warnings. > * g++.dg/cpp1y/auto-fn50.C: Likewise. > * g++.dg/cpp0x/auto9.C: Expect two errors always rather than just > for C++11. > libstdc++-v3/ > * include/std/type_traits (constant_wrapper conversion operator): > Use decltype(value) instead of decltype(auto). Resolves LWG4468. > > --- gcc/cp/parser.cc.jj 2025-11-15 16:03:45.587512374 +0100 > +++ gcc/cp/parser.cc 2025-11-17 10:21:57.667975827 +0100 > @@ -18779,9 +18779,14 @@ cp_parser_conversion_type_id (cp_parser* > error ("invalid use of %<auto%> in conversion operator"); > return error_mark_node; > } > - else if (template_parm_scope_p ()) > - warning (0, "use of %<auto%> in member template " > - "conversion operator can never be deduced"); > + else > + {
I suppose auto_diagnostic_group doesn't belong here? > + pedwarn (input_location, OPT_Wpedantic, > + "invalid use of %<auto%> in conversion operator"); > + if (template_parm_scope_p ()) > + warning (0, "use of %<auto%> in member template " > + "conversion operator can never be deduced"); Patch LGTM. Marek
