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