1// Build don't link:
2// GROUPS passed nested-classes
3class BDDHeap {
4public:
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
33inline
34BDDHeap::Pointer::Pointer(const BDDHeap& heap):
35page(heap.half[heap.halfspace].inuse.top),
36index(0)
37{ }
38