Commit | Line | Data |
---|---|---|
258093ca MC |
1 | // 2002-05-13 |
2 | ||
76565097 | 3 | enum region { oriental, egyptian, greek, etruscan, roman }; |
258093ca | 4 | |
76565097 DC |
5 | // Test one. |
6 | class gnu_obj_1 | |
7 | { | |
8 | protected: | |
9 | typedef region antiquities; | |
10 | static const bool test = true; | |
11 | static const int key1 = 5; | |
12 | static long key2; | |
258093ca | 13 | |
76565097 | 14 | static antiquities value; |
258093ca | 15 | |
76565097 DC |
16 | public: |
17 | gnu_obj_1(antiquities a, long l) {} | |
18 | }; | |
258093ca | 19 | |
76565097 DC |
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; | |
258093ca MC |
24 | |
25 | ||
76565097 DC |
26 | // Test two. |
27 | template<typename T> | |
28 | class gnu_obj_2: public virtual gnu_obj_1 | |
29 | { | |
30 | public: | |
31 | static antiquities value_derived; | |
258093ca | 32 | |
76565097 DC |
33 | public: |
34 | gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7) { } | |
35 | }; | |
258093ca | 36 | |
76565097 DC |
37 | template<typename T> |
38 | typename gnu_obj_2<T>::antiquities gnu_obj_2<T>::value_derived = etruscan; | |
258093ca | 39 | |
76565097 DC |
40 | // Test three. |
41 | template<typename T> | |
42 | class gnu_obj_3 | |
43 | { | |
44 | public: | |
45 | typedef region antiquities; | |
46 | static gnu_obj_2<int> data; | |
258093ca | 47 | |
76565097 DC |
48 | public: |
49 | gnu_obj_3(antiquities b) { } | |
50 | }; | |
258093ca | 51 | |
76565097 DC |
52 | template<typename T> |
53 | gnu_obj_2<int> gnu_obj_3<T>::data(etruscan); | |
e70d6e3f | 54 | |
76565097 DC |
55 | // 2002-08-16 |
56 | // Test four. | |
e70d6e3f | 57 | #include "m-static.h" |
258093ca MC |
58 | |
59 | // instantiate templates explicitly so their static members will exist | |
76565097 DC |
60 | template class gnu_obj_2<int>; |
61 | template class gnu_obj_2<long>; | |
62 | template class gnu_obj_3<long>; | |
258093ca MC |
63 | |
64 | int main() | |
65 | { | |
258093ca MC |
66 | gnu_obj_1 test1(egyptian, 4589); |
67 | gnu_obj_2<long> test2(roman); | |
68 | gnu_obj_3<long> test3(greek); | |
e70d6e3f | 69 | gnu_obj_4 test4; |
258093ca | 70 | |
c7e64c9a DJ |
71 | test4.dummy = 0; |
72 | return test4.dummy; // breakpoint: constructs-done | |
258093ca | 73 | } |