fork download
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. struct nur_zum_testen_t {} nur_zum_testen;
  5.  
  6. template <typename T>
  7. class List {
  8. T * items;
  9. int size, capacity;
  10. public:
  11. List(const List& list);
  12. ~List() { delete[] items; }
  13.  
  14. List(nur_zum_testen_t, T *items, int size, int capacity)
  15. : items(items), size(size), capacity(capacity) {}
  16. };
  17.  
  18. template <class T>
  19. List<T>::List(const List& list) :
  20. items(new T[list.capacity]),
  21. size(list.size),
  22. capacity(list.capacity)
  23. {
  24. std::copy( list.items, list.items + size, items );
  25. }
  26.  
  27. int instances;
  28. struct doofsinn {
  29. doofsinn() { ++instances; }
  30. ~doofsinn() { --instances; }
  31. doofsinn& operator=(doofsinn const&) {
  32. static int doofsinn_counter = 0;
  33. if (++doofsinn_counter % 5 == 0)
  34. throw "Sone";
  35. }
  36. };
  37.  
  38. int main()
  39. {
  40. {
  41. List<doofsinn> l(nur_zum_testen, new doofsinn[10] (), 10, 10);
  42. try { List<doofsinn> l2(l); } catch(...) {}
  43. }
  44. std::cout << instances << " instances still out there ...\n";
  45. }
  46.  
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
10 instances still out there ...