Before declaration of b1 constructing int id: 0 constructing int id: 1 constructing int id: 2 default construct A 0 constructing int id: 3 constructing int id: 4 constructing int id: 5 default construct A 1 begin construct B id: 0 assign b.a2 constructing int id: 6 constructing int id: 7 begin construct A id: 2 construct a.x constructing int: 1001 id: 8 assign a.y assigning int: 0 0 id: 6 end construct A copy constructing int: 0 id: 9 copy constructing int: 0 id: 10 begin copy construct A id: 3 copy construct this.x copy constructing int: 1001 id: 11 assign this.y copy constructing int: 0 id: 12 destructing int: 0 id: 12 destructing int: 0 id: 12 end copy construct A begin ?=? A id: 0 copy constructing int: 1001 id: 13 destructing int: 1001 id: 13 destructing int: 1001 id: 13 copy constructing int: 0 id: 14 destructing int: 0 id: 14 destructing int: 0 id: 14 copy constructing int: 0 id: 15 destructing int: 0 id: 15 destructing int: 0 id: 15 end ?=? A copy constructing int: 0 id: 16 copy constructing int: 0 id: 17 begin copy construct A id: 4 copy construct this.x copy constructing int: 1001 id: 18 assign this.y copy constructing int: 0 id: 19 destructing int: 0 id: 19 destructing int: 0 id: 19 end copy construct A destructing int: 0 id: 17 destructing int: 0 id: 19 destructing int: 1001 id: 18 destructing int: 0 id: 10 destructing int: 0 id: 12 destructing int: 1001 id: 11 construct b.a1 constructing int id: 20 constructing int id: 21 begin construct A id: 5 construct a.x constructing int: 1000 id: 22 assign a.y assigning int: 0 0 id: 20 end construct A end construct B destructing int: 0 id: 7 destructing int: 0 id: 6 destructing int: 1001 id: 8 Before declaration of b2 copy constructing int: 0 id: 23 copy constructing int: 0 id: 24 begin copy construct A id: 6 copy construct this.x copy constructing int: 1000 id: 25 assign this.y copy constructing int: 0 id: 26 destructing int: 0 id: 26 destructing int: 0 id: 26 end copy construct A copy constructing int: 0 id: 27 copy constructing int: 0 id: 28 begin copy construct A id: 7 copy construct this.x copy constructing int: 1001 id: 29 assign this.y copy constructing int: 0 id: 30 destructing int: 0 id: 30 destructing int: 0 id: 30 end copy construct A copy constructing int: 0 id: 31 copy constructing int: 0 id: 32 begin copy construct A id: 8 copy construct this.x copy constructing int: 0 id: 33 assign this.y copy constructing int: 0 id: 34 destructing int: 0 id: 34 destructing int: 0 id: 34 end copy construct A End of main begin destruct B id: 1 constructing int id: 35 constructing int id: 36 begin construct A id: 9 construct a.x constructing int: 999 id: 37 assign a.y assigning int: 0 0 id: 35 end construct A copy constructing int: 0 id: 38 copy constructing int: 0 id: 39 begin copy construct A id: 10 copy construct this.x copy constructing int: 999 id: 40 assign this.y copy constructing int: 0 id: 41 destructing int: 0 id: 41 destructing int: 0 id: 41 end copy construct A begin ?=? A id: 7 copy constructing int: 999 id: 42 destructing int: 999 id: 42 destructing int: 999 id: 42 copy constructing int: 0 id: 43 destructing int: 0 id: 43 destructing int: 0 id: 43 copy constructing int: 0 id: 44 destructing int: 0 id: 44 destructing int: 0 id: 44 end ?=? A copy constructing int: 0 id: 45 copy constructing int: 0 id: 46 begin copy construct A id: 11 copy construct this.x copy constructing int: 999 id: 47 assign this.y copy constructing int: 0 id: 48 destructing int: 0 id: 48 destructing int: 0 id: 48 end copy construct A destructing int: 0 id: 46 destructing int: 0 id: 48 destructing int: 999 id: 47 destructing int: 0 id: 39 destructing int: 0 id: 41 destructing int: 999 id: 40 destructing int: 0 id: 24 destructing int: 0 id: 26 destructing int: 1000 id: 25 end destruct B destructing int: 0 id: 36 destructing int: 0 id: 35 destructing int: 999 id: 37 destructing int: 0 id: 32 destructing int: 0 id: 34 destructing int: 0 id: 33 destructing int: 0 id: 44 destructing int: 0 id: 43 destructing int: 999 id: 42 begin destruct B id: 2 constructing int id: 49 constructing int id: 50 begin construct A id: 12 construct a.x constructing int: 999 id: 51 assign a.y assigning int: 0 0 id: 49 end construct A copy constructing int: 0 id: 52 copy constructing int: 0 id: 53 begin copy construct A id: 13 copy construct this.x copy constructing int: 999 id: 54 assign this.y copy constructing int: 0 id: 55 destructing int: 0 id: 55 destructing int: 0 id: 55 end copy construct A begin ?=? A id: 0 copy constructing int: 999 id: 56 destructing int: 999 id: 56 destructing int: 999 id: 56 copy constructing int: 0 id: 57 destructing int: 0 id: 57 destructing int: 0 id: 57 copy constructing int: 0 id: 58 destructing int: 0 id: 58 destructing int: 0 id: 58 end ?=? A copy constructing int: 0 id: 59 copy constructing int: 0 id: 60 begin copy construct A id: 14 copy construct this.x copy constructing int: 999 id: 61 assign this.y copy constructing int: 0 id: 62 destructing int: 0 id: 62 destructing int: 0 id: 62 end copy construct A destructing int: 0 id: 60 destructing int: 0 id: 62 destructing int: 999 id: 61 destructing int: 0 id: 53 destructing int: 0 id: 55 destructing int: 999 id: 54 destructing int: 0 id: 21 destructing int: 0 id: 20 destructing int: 1000 id: 22 end destruct B destructing int: 0 id: 50 destructing int: 0 id: 49 destructing int: 999 id: 51 destructing int: 0 id: 5 destructing int: 0 id: 4 destructing int: 0 id: 3 destructing int: 0 id: 58 destructing int: 0 id: 57 destructing int: 999 id: 56