2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr35164-2.C
blob463cad7f7b83f78377ec3fc2d2a15b69526cb894
1 struct __shared_count {
2     __shared_count() { _M_pi = new int; }
3     int * _M_pi;
4 };
5 template<typename _Tp>
6 class __shared_ptr {
7 public:
8     __shared_ptr(_Tp* __p);
9     void reset(int * __p) {
10         __shared_ptr(__p).swap(*this);
11     }
12     void swap(__shared_ptr<_Tp>& __other) {
13         __other._M_refcount._M_pi = _M_refcount._M_pi;
14     }
15     __shared_count _M_refcount;
17 template<typename _Tp> class shared_ptr : public __shared_ptr<_Tp> {};
18 int main() {
19     for (shared_ptr<int> *iter;;)
20     {
21         try {
22             (iter++)->reset(new int);
23         }
24         catch (...) {
25         }
26     }