On 11/17/25 8:09 PM, Marek Polacek wrote:
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.

Agreed, OK.

Jason

Reply via email to