123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #define assert(E) \
- if (!(E)) \
- return 1;
- template <class T>
- class zero_init
- {
- public:
- zero_init()
- : val(static_cast<T>(0))
- {
- }
- zero_init(T val)
- : val(val)
- {
- }
- operator T&() { return val; }
- operator T() const { return val; }
- private:
- T val;
- };
- int someFunc()
- {
- zero_init<int*> p;
- assert(p == 0);
- p = new int(7);
- assert(*p == 7);
- delete p;
- zero_init<int> i;
- assert(i == 0);
- i = 7;
- assert(i == 7);
- switch (i) {
- }
- int* vp = new int[i];
- return 0;
- }
|