On Tue, 15 Nov 2022 at 23:50, Jakub Jelinek <ja...@redhat.com> wrote: > > 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)?
Yes, I think so. We just won't be able to advertise this feature as supported in C++20. > 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 >