]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: update FTM for C++23 inherited CTAD
authorPatrick Palka <ppalka@redhat.com>
Mon, 2 Feb 2026 20:20:37 +0000 (15:20 -0500)
committerPatrick Palka <ppalka@redhat.com>
Mon, 2 Feb 2026 20:20:37 +0000 (15:20 -0500)
We implement inherited CTAD (P2582R1) since GCC 14 but the corresponding
FTM hasn't been updated in the standard until recently[1].

[1]: https://github.com/cplusplus/draft/pull/8450

gcc/c-family/ChangeLog:

* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_deduction_guides to
202207L for C++23 and later.

gcc/testsuite/ChangeLog:

* g++.dg/cpp23/feat-cxx2b.C: Adjust expected __cpp_deduction_guides
value.
* g++.dg/cpp26/feat-cxx26.C: Likewise.

Reviewed-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/c-family/c-cppbuiltin.cc
gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
gcc/testsuite/g++.dg/cpp26/feat-cxx26.C

index 12ddfa22074ccae2fd89e70c95f2797fff02d4ca..48095988da560e27efcc0c8dd936db97d7fa42dd 100644 (file)
@@ -1079,7 +1079,8 @@ c_cpp_builtins (cpp_reader *pfile)
          cpp_define (pfile, "__cpp_conditional_explicit=201806L");
          cpp_define (pfile, "__cpp_consteval=202211L");
          cpp_define (pfile, "__cpp_constinit=201907L");
-         cpp_define (pfile, "__cpp_deduction_guides=201907L");
+         if (cxx_dialect <= cxx20)
+           cpp_define (pfile, "__cpp_deduction_guides=201907L");
          cpp_define (pfile, "__cpp_nontype_template_args=201911L");
          cpp_define (pfile, "__cpp_nontype_template_parameter_class=201806L");
          cpp_define (pfile, "__cpp_impl_destroying_delete=201806L");
@@ -1096,6 +1097,7 @@ c_cpp_builtins (cpp_reader *pfile)
          cpp_define (pfile, "__cpp_auto_cast=202110L");
          if (cxx_dialect <= cxx23)
            cpp_define (pfile, "__cpp_constexpr=202211L");
+         cpp_define (pfile, "__cpp_deduction_guides=202207L");
          cpp_define (pfile, "__cpp_multidimensional_subscript=202211L");
          cpp_define (pfile, "__cpp_named_character_escapes=202207L");
          cpp_define (pfile, "__cpp_static_call_operator=202207L");
index 4033552b2ebc0bec8e3b64b557dee731f58c9cc6..06901afadb626c11c491d7a215bb5575fb41a61f 100644 (file)
 
 #ifndef __cpp_deduction_guides
 #  error "__cpp_deduction_guides"
-#elif __cpp_deduction_guides != 201907
-#  error "__cpp_deduction_guides != 201907"
+#elif __cpp_deduction_guides != 202207
+#  error "__cpp_deduction_guides != 202207"
 #endif
 
 #ifndef __cpp_if_constexpr
index 08c0ed457af32df4a05eae932cacfbfdb8c73035..24811669961734d4d3c8e8d6edbb838bb99e5baf 100644 (file)
 
 #ifndef __cpp_deduction_guides
 #  error "__cpp_deduction_guides"
-#elif __cpp_deduction_guides != 201907
-#  error "__cpp_deduction_guides != 201907"
+#elif __cpp_deduction_guides != 202207
+#  error "__cpp_deduction_guides != 202207"
 #endif
 
 #ifndef __cpp_if_constexpr