Training courses
Kernel and Embedded Linux
Bootlin training courses
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
// 2002-05-13 enum region { oriental, egyptian, greek, etruscan, roman }; void keepalive(bool *var) { } void keepalive_int (int *var) { } // Test one. class gnu_obj_1 { protected: typedef region antiquities; static const bool test = true; static const int key1 = 5; static long key2; static antiquities value; public: gnu_obj_1(antiquities a, long l) {} ~gnu_obj_1() {} long method () { static int sintvar = 4; static bool svar = true; keepalive (&svar); keepalive_int (&sintvar); return key2; } }; // An object with a single constructor. class single_constructor { public: single_constructor () { } ~single_constructor () { } }; const bool gnu_obj_1::test; const int gnu_obj_1::key1; long gnu_obj_1::key2 = 77; gnu_obj_1::antiquities gnu_obj_1::value = oriental; // Test two. template<typename T> class gnu_obj_2: public virtual gnu_obj_1 { public: static antiquities value_derived; public: gnu_obj_2(antiquities b): gnu_obj_1(oriental, 7) { } }; template<typename T> typename gnu_obj_2<T>::antiquities gnu_obj_2<T>::value_derived = etruscan; // Test three. template<typename T> class gnu_obj_3 { public: typedef region antiquities; static gnu_obj_2<int> data; public: gnu_obj_3(antiquities b) { } }; template<typename T> gnu_obj_2<int> gnu_obj_3<T>::data(etruscan); // 2002-08-16 // Test four. #include "m-static.h" // instantiate templates explicitly so their static members will exist template class gnu_obj_2<int>; template class gnu_obj_2<long>; template class gnu_obj_3<long>; int main() { gnu_obj_1 test1(egyptian, 4589); gnu_obj_2<long> test2(roman); gnu_obj_3<long> test3(greek); gnu_obj_4 test4; single_constructor test5; test4.dummy = test4.elsewhere; test4.dummy = 0; test1.method (); // breakpoint: constructs-done return test4.dummy; }