1// 2002-05-13 2 3enum region { oriental, egyptian, greek, etruscan, roman }; 4 5// Test one. 6class gnu_obj_1 7{ 8protected: 9 typedef region antiquities; 10 const bool test; 11 const int key1; 12 long key2; 13 14 antiquities value; 15 16public: 17 gnu_obj_1(antiquities a, long l): test(true), key1(5), key2(l), value(a) {} 18}; 19 20// Test two. 21template<typename T> 22class gnu_obj_2: public virtual gnu_obj_1 23{ 24protected: 25 antiquities value_derived; 26 27public: 28 gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7), value_derived(b) { } 29}; 30 31// Test three. 32template<typename T> 33class gnu_obj_3 34{ 35protected: 36 typedef region antiquities; 37 gnu_obj_2<int> data; 38 39public: 40 gnu_obj_3(antiquities b): data(etruscan) { } 41}; 42 43int shadow = 0; 44 45class C 46{ 47public: 48 C (int x) : shadow (x) {} 49 void marker () {} 50private: 51 int shadow; 52}; 53 54int main() 55{ 56 gnu_obj_1 test1(egyptian, 4589); 57 gnu_obj_2<long> test2(roman); 58 gnu_obj_3<long> test3(greek); 59 60 C theC (1); // breakpoint: first-constructs-done 61 theC.marker (); 62 63 return 0; 64} 65