1// { dg-do assemble } 2// { dg-options "-O" } 3// Bug: Synthesizing methods for the nested class screwed up current_class_decl 4// for the outer class. 5 6class A; 7class AH 8{ 9 public: 10 AH ( A * p = 0 ); 11 AH ( const AH & from ) 12 : pointer( from.pointer ) { inc(); } 13 ~ AH () { dec(); } 14 private: 15 A * pointer; 16 void inc() const; 17 void dec() const; 18}; 19 20class A 21{ 22 protected: 23 struct AttrTable 24 { 25 struct Row 26 { 27 }; 28 }; 29 30 public: 31 32 class Attributes 33 { 34 public: 35 class iterator 36 { 37 public: 38 iterator() : mo(0), attr(0) {} 39 iterator& operator++() { ++attr; return *this; } 40 iterator operator++(int) 41 { iterator tmp = *this; ++*this; return tmp; } 42 43 private: 44 AH mo; 45 const AttrTable::Row* attr; 46 }; 47 48 Attributes(AH mo) 49 : mo(mo) {} 50 AH mo; 51 }; 52}; 53