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