// This structure has a non-trivial copy constructor so // it needs to be passed by reference. struct PassByRef { PassByRef() = default; PassByRef(const PassByRef &p){x = p.x;}; int x = 11223344; }; PassByRef returnPassByRef() { return PassByRef(); } int takePassByRef(PassByRef p) { return p.x; } int main() { PassByRef p = returnPassByRef(); p.x = 42; return takePassByRef(p); // break here }