4b3b69504558f638e73ef431bc5d13d64d57dd06
[openbsd] /
1 // This structure has a non-trivial copy constructor so
2 // it needs to be passed by reference.
3 struct PassByRef {
4   PassByRef() = default;
5   PassByRef(const PassByRef &p){x = p.x;};
6
7   int x = 11223344;
8 };
9
10 PassByRef returnPassByRef() { return PassByRef(); }
11 int takePassByRef(PassByRef p) {
12     return p.x;
13 }
14
15 int main() {
16     PassByRef p = returnPassByRef();
17     p.x = 42;
18     return takePassByRef(p); // break here
19 }