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)34 BDDHeap::Pointer::Pointer(const BDDHeap& heap):
35 page(heap.half[heap.halfspace].inuse.top),
36 index(0)
37 { }
38