3 enum region { oriental, egyptian, greek, etruscan, roman };
9 typedef region antiquities;
10 static const bool test = true;
11 static const int key1 = 5;
14 static antiquities value;
17 gnu_obj_1(antiquities a, long l) {}
20 const bool gnu_obj_1::test;
21 const int gnu_obj_1::key1;
22 long gnu_obj_1::key2 = 77;
23 gnu_obj_1::antiquities gnu_obj_1::value = oriental;
28 class gnu_obj_2: public virtual gnu_obj_1
31 static antiquities value_derived;
34 gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7) { }
38 typename gnu_obj_2<T>::antiquities gnu_obj_2<T>::value_derived = etruscan;
45 typedef region antiquities;
46 static gnu_obj_2<int> data;
49 gnu_obj_3(antiquities b) { }
53 gnu_obj_2<int> gnu_obj_3<T>::data(etruscan);
59 // instantiate templates explicitly so their static members will exist
60 template class gnu_obj_2<int>;
61 template class gnu_obj_2<long>;
62 template class gnu_obj_3<long>;
66 gnu_obj_1 test1(egyptian, 4589);
67 gnu_obj_2<long> test2(roman);
68 gnu_obj_3<long> test3(greek);
72 return test4.dummy; // breakpoint: constructs-done