Validated by https://validator.w3.org/. Pushed.
-- >8 -- commit 15044ad13dee7627d8d235de1c502143828c4538 Author: Marek Polacek <[email protected]> Date: Tue Jun 16 15:08:48 2026 -0400 Add C++29 Brno papers diff --git a/htdocs/projects/cxx-status.html b/htdocs/projects/cxx-status.html index cb3b6cfb..48b7c6e0 100644 --- a/htdocs/projects/cxx-status.html +++ b/htdocs/projects/cxx-status.html @@ -21,6 +21,7 @@ <li><a href="#cxx20">C++20</a></li> <li><a href="#cxx23">C++23</a></li> <li><a href="#cxx26">C++26</a></li> + <li><a href="#cxx29">C++29</a></li> <li><a href="#tses">Technical Specifications</a></li> </ul> @@ -33,6 +34,144 @@ Implementation Status</a> section of the Libstdc++ manual. </p> + <h2 id="cxx29">C++29 Support in GCC</h2> + <p>GCC has experimental support for the next revision of the C++ + standard, which is expected to be published in 2029.</p> + + <p>C++29 features are available since GCC 17. To enable C++29 + support, add the command-line parameter <code>-std=c++29</code> + to your <code>g++</code> command line. Or, to enable GNU + extensions in addition to C++29 features, + add <code>-std=gnu++29</code>.</p> + + <p><strong>Important</strong>: Because the ISO C++29 standard is still + evolving, GCC's support is <strong>experimental</strong>. No attempt will + be made to maintain backward compatibility with implementations of C++29 + features that do not reflect the final standard.</p> + + <h2>C++29 Language Features</h2> + + <table class="cxxstatus"> + <tr class="separator"> + <th>Language Feature</th> + <th>Proposal</th> + <th>Available in GCC?</th> + <th>SD-6 Feature Test</th> + </tr> + <!-- Spring 2026 papers (Brno) --> + <tr> + <td>Clarify the behavior of floating-point overflow</td> + <td><a href="https://wg21.link/P3899R3">P3899R3</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125824">No</a></td> + <td></td> + </tr> + <tr> + <td>Defaulting postfix increment and decrement operations</td> + <td><a href="https://wg21.link/P3668R4">P3668R4</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125825">No</a></td> + <td></td> + </tr> + <tr> + <td>Adding restrictions to defaulted assignment operator functions</td> + <td><a href="https://wg21.link/P2953R5">P2953R5</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125826">No</a></td> + <td></td> + </tr> + <tr> + <td>Nondeterministic pointer provenance</td> + <td><a href="https://wg21.link/P2434R5">P2434R5</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125827">No</a></td> + <td></td> + </tr> + <tr> + <td>Invalid pointer operations</td> + <td><a href="https://wg21.link/P3347R6">P3347R6</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125828">No</a></td> + <td></td> + </tr> + <tr> + <td>Adjust identifier following new Unicode recommendations</td> + <td><a href="https://wg21.link/P3658R1">P3658R1</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125829">No</a></td> + <td></td> + </tr> + <tr> + <td><code>return_value</code> & <code>return_void</code> are not mutually exclusive</td> + <td><a href="https://wg21.link/P3950R1">P3950R1</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125830">No</a></td> + <td></td> + </tr> + <tr> + <td>More named universal character escapes</td> + <td><a href="https://wg21.link/P3733R1">P3733R1</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125831">No</a></td> + <td></td> + </tr> + <tr> + <td>Lexical order for lambdas</td> + <td><a href="https://wg21.link/P3847R1">P3847R1</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125832">No</a></td> + <td></td> + </tr> + <tr> + <td>Language linkage for templates</td> + <td><a href="https://wg21.link/P2243R0">P2243R0</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125823">No</a></td> + <td></td> + </tr> + <tr> + <td>Deallocation functions with throwing exception specification are ill-formed</td> + <td><a href="https://wg21.link/P3424R2">P3424R2</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125833">No</a></td> + <td></td> + </tr> + <tr> + <td>Conditional noexcept specifiers in compound requirements</td> + <td><a href="https://wg21.link/P3822R2">P3822R2</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125822">No</a></td> + <td></td> + </tr> + <tr> + <td>Contracts for C++: virtual functions</td> + <td><a href="https://wg21.link/P3097R3">P3097R3</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125834">No</a></td> + <td></td> + </tr> + <tr> + <td>Consteval-only values for C++26</td> + <td><a href="https://wg21.link/P4101R1">P4101R1</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125820">No</a></td> + <td></td> + </tr> + <tr> + <td>Pointer lifetime-end zap proposed solutions</td> + <td><a href="https://wg21.link/P2414R12">P2414R12</a> (<a href="./cxx-dr-status.html">DR</a>)</td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125835">No</a></td> + <td></td> + </tr> + <tr> + <td>Pack indexing for template names</td> + <td><a href="https://wg21.link/P3670R4">P3670R4</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125836">No</a></td> + <td></td> + </tr> + <tr> + <td><code>#embed</code> offset parameter</td> + <td><a href="https://wg21.link/P3540R3">P3540R3</a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR125837">No</a></td> + <td></td> + </tr> + <!-- + <tr> + <td> </td> + <td> <a href="https://wg21.link/p"></a></td> + <td class="unsupported"> <a href="https://gcc.gnu.org/PR">No</a></td> + <td> </td> + </tr> + --> + </table> + + <h2 id="cxx26">C++26 Support in GCC</h2> <p>GCC has experimental support for the next revision of the C++
