On Tue, Nov 15, 2022 at 06:36:38PM -0500, Jason Merrill wrote: > > Here is an updated patch that passed bootstrap/regtest, the only > > change is another testcase tweak. > > > > 2022-11-13 Jakub Jelinek <ja...@redhat.com> > > > > gcc/c-family/ > > * c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_constexpr > > value from 202207L to 202211L. > > gcc/cp/ > > * constexpr.cc (cxx_eval_constant_expression): Implement C++23 > > P2647R1 - Permitting static constexpr variables in constexpr functions. > > Allow decl_maybe_constant_var_p static or thread_local vars for > > C++23. > > This was accepted as a DR, so it shouldn't be limited to C++23 mode. > Certainly it should be allowed in C++20 mode; I don't have a strong opinion > about C++14/17. Jonathan, do you?
How will a feature with feature test macro with multiple values work as DR? Or will everything but the macro be treated as a DR (so __cpp_constexpr >= 202211L only for C++23)? Because __cpp_constexpr >= 202211L is >= 202207L too and that implies P2448R2 which wasn't a DR and >= 202110L which implies P2242R3 which wasn't a DR. And C++20 added other 2 non-DR papers that bumped the value. C++17 another one. > > (potential_constant_expression_1): Likewise. > > gcc/testsuite/ > > * g++.dg/cpp23/constexpr-nonlit17.C: New test. > > * g++.dg/cpp23/feat-cxx2b.C: Adjust expected __cpp_constexpr > > value. > > * g++.dg/ext/stmtexpr19.C: Don't expect an error for C++23 or later. Jakub