From 2423f6548405185e256036df3d0ef3c13fd996c5 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Thu, 2 Jun 2022 15:56:18 -0400 Subject: [PATCH] c++: new-expression is potentially constant in C++20 ... so adjust p_c_e accordingly. gcc/cp/ChangeLog: * constexpr.cc (potential_constant_expression_1): Treat {,VEC_}NEW_EXPR and {,VEC_}DELETE_EXPRas potentially constant in C++20. --- gcc/cp/constexpr.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/cp/constexpr.cc b/gcc/cp/constexpr.cc index 1346a1d4c10..684238883dc 100644 --- a/gcc/cp/constexpr.cc +++ b/gcc/cp/constexpr.cc @@ -9039,12 +9039,20 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now, "before C++17"); return false; - case DYNAMIC_CAST_EXPR: - case PSEUDO_DTOR_EXPR: case NEW_EXPR: case VEC_NEW_EXPR: case DELETE_EXPR: case VEC_DELETE_EXPR: + if (cxx_dialect >= cxx20) + /* In C++20, new-expressions are potentially constant. */ + return true; + else if (flags & tf_error) + error_at (loc, "new-expression is not a constant expression " + "before C++20"); + return false; + + case DYNAMIC_CAST_EXPR: + case PSEUDO_DTOR_EXPR: case THROW_EXPR: case OMP_PARALLEL: case OMP_TASK: -- 2.11.4.GIT