]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/auto_ptr_rv_test.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / smart_ptr / test / auto_ptr_rv_test.cpp
1 #include <boost/config.hpp>
2
3 //
4 // auto_ptr_rv_test.cpp
5 //
6 // Copyright (c) 2006 Peter Dimov
7 //
8 // Distributed under the Boost Software License, Version 1.0.
9 // See accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt
11 //
12
13 #if defined( BOOST_NO_AUTO_PTR )
14
15 int main()
16 {
17 }
18
19 #else
20
21 #include <boost/shared_ptr.hpp>
22 #include <boost/detail/lightweight_test.hpp>
23 #include <memory>
24
25 struct X
26 {
27 static long instances;
28
29 X()
30 {
31 ++instances;
32 }
33
34 ~X()
35 {
36 --instances;
37 }
38
39 static std::auto_ptr<X> create()
40 {
41 return std::auto_ptr<X>( new X );
42 }
43
44 private:
45
46 X( X const & );
47 X & operator=( X const & );
48 };
49
50 long X::instances = 0;
51
52 int main()
53 {
54 BOOST_TEST( X::instances == 0 );
55
56 {
57 boost::shared_ptr<X> p( X::create() );
58 BOOST_TEST( X::instances == 1 );
59
60 p = X::create();
61 BOOST_TEST( X::instances == 1 );
62
63 p.reset();
64 BOOST_TEST( X::instances == 0 );
65
66 p = X::create();
67 BOOST_TEST( X::instances == 1 );
68 }
69
70 BOOST_TEST( X::instances == 0 );
71
72 {
73 boost::shared_ptr<X const> p( X::create() );
74 BOOST_TEST( X::instances == 1 );
75
76 p = X::create();
77 BOOST_TEST( X::instances == 1 );
78
79 p.reset();
80 BOOST_TEST( X::instances == 0 );
81
82 p = X::create();
83 BOOST_TEST( X::instances == 1 );
84 }
85
86 BOOST_TEST( X::instances == 0 );
87
88 {
89 boost::shared_ptr<void> p( X::create() );
90 BOOST_TEST( X::instances == 1 );
91
92 p = X::create();
93 BOOST_TEST( X::instances == 1 );
94
95 p.reset();
96 BOOST_TEST( X::instances == 0 );
97
98 p = X::create();
99 BOOST_TEST( X::instances == 1 );
100 }
101
102 BOOST_TEST( X::instances == 0 );
103
104 {
105 boost::shared_ptr<void const> p( X::create() );
106 BOOST_TEST( X::instances == 1 );
107
108 p = X::create();
109 BOOST_TEST( X::instances == 1 );
110
111 p.reset();
112 BOOST_TEST( X::instances == 0 );
113
114 p = X::create();
115 BOOST_TEST( X::instances == 1 );
116 }
117
118 BOOST_TEST( X::instances == 0 );
119
120 return boost::report_errors();
121 }
122
123 #endif // #if defined( BOOST_NO_AUTO_PTR )