// PR c++/97388 // { dg-do compile { target c++20 } } struct S { int m; constexpr S () : m(1) {} constexpr ~S () noexcept (false) { if (m == 1) { throw; } } }; constexpr bool foo (S v) { v.m = 2; return true; } constexpr bool bar () { return foo (S ()); } constexpr bool baz () { foo (S ()); return foo (S ()); } static_assert (foo (S ())); static_assert (bar ()); static_assert (baz ()); constexpr bool x = foo (S ()); constexpr bool y = bar (); constexpr bool z = baz ();