1 // { dg-do assemble } 2 // GROUPS passed nested-classes 3 class BDDHeap { 4 public: 5 BDDHeap(); 6 BDDHeap(const BDDHeap&); 7 8 class Page { 9 public: 10 int i; 11 }; 12 struct Pointer { 13 Page *page; 14 unsigned index; 15 16 Pointer(); 17 Pointer(const BDDHeap& heap); 18 }; 19 20 struct Half { 21 struct { 22 Page *top; 23 Page **tail; 24 } inuse; 25 26 Half(); 27 }; 28 29 Half half[2]; 30 unsigned halfspace; 31 }; 32 33 inline Pointer(const BDDHeap & heap)34BDDHeap::Pointer::Pointer(const BDDHeap& heap): 35 page(heap.half[heap.halfspace].inuse.top), 36 index(0) 37 { } 38