(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
cpp2a/
constexpr-new19.C
// 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);