blob: 56cc9e3c1c801103e5f63ba829a867044eae9e5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// { dg-do compile { target c++20 } }
#include "construct_at.h"
struct S { int x; };
constexpr bool foo(S s, S*& p) {
p = &s;
s.~S();
return true;
}
constexpr bool bar() {
// This is, strictly speaking, implementation-defined behaviour;
// see [expr.call] p6. However, in all other cases we destroy
// at the end of the full-expression, so the below should be fixed.
S* p;
foo(S{}, p), std::construct_at(p); // { dg-bogus "destroying" "" { xfail *-*-* } }
return true;
}
constexpr bool x = bar();
|