1// { dg-do compile } 2// { dg-options "-O2" } 3 4typedef __complex__ double Value; 5struct LorentzVector 6{ 7 LorentzVector & operator+=(const LorentzVector & a) { 8 theX += a.theX; 9 theY += a.theY; 10 theZ += a.theZ; 11 theT += a.theT; 12 return *this; 13 } 14 15 Value theX; 16 Value theY; 17 Value theZ; 18 Value theT; 19}; 20 21inline LorentzVector 22operator+(LorentzVector a, const LorentzVector & b) { 23 return a += b; 24} 25 26Value ex, et; 27LorentzVector sum() { 28 LorentzVector v1; v1.theX =ex; v1.theY =ex+et; v1.theZ =ex-et; v1.theT =et; 29 return v1+v1; 30} 31