// PR c++/99859 | |
// { dg-do compile { target c++20 } } | |
constexpr void | |
foo (int *x) | |
{ | |
++*x; | |
} | |
constexpr int | |
bar () | |
{ | |
int *x = new int (0); | |
foo (x); | |
foo (x); | |
int y = *x; | |
delete x; | |
return y; | |
} | |
static_assert (bar () == 2); | |
struct R { int a, *b; }; | |
constexpr void | |
baz (R x) | |
{ | |
++*x.b; | |
} | |
constexpr int | |
qux () | |
{ | |
int *x = new int (0); | |
R r{1, x}; | |
baz (r); | |
baz (r); | |
int y = *x; | |
delete x; | |
return y; | |
} | |
static_assert (qux () == 2); |