]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/shared_ptr_move_test.cpp
2 // shared_ptr_move_test.cpp
4 // Copyright (c) 2007 Peter Dimov
6 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt
11 #include <boost/shared_ptr.hpp>
12 #include <boost/detail/lightweight_test.hpp>
15 #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
19 static long instances
;
34 X
& operator=( X
const & );
37 long X::instances
= 0;
41 BOOST_TEST( X::instances
== 0 );
44 boost::shared_ptr
<X
> p( new X
);
45 BOOST_TEST( X::instances
== 1 );
47 boost::shared_ptr
<X
> p2( std::move( p
) );
48 BOOST_TEST( X::instances
== 1 );
49 BOOST_TEST( p
.get() == 0 );
51 boost::shared_ptr
<void> p3( std::move( p2
) );
52 BOOST_TEST( X::instances
== 1 );
53 BOOST_TEST( p2
.get() == 0 );
56 BOOST_TEST( X::instances
== 0 );
60 boost::shared_ptr
<X
> p( new X
);
61 BOOST_TEST( X::instances
== 1 );
63 boost::shared_ptr
<X
> p2
;
65 BOOST_TEST( X::instances
== 1 );
66 BOOST_TEST( p
.get() == 0 );
68 boost::shared_ptr
<void> p3
;
70 BOOST_TEST( X::instances
== 1 );
71 BOOST_TEST( p2
.get() == 0 );
74 BOOST_TEST( X::instances
== 0 );
78 boost::shared_ptr
<X
> p( new X
);
79 BOOST_TEST( X::instances
== 1 );
81 boost::shared_ptr
<X
> p2( new X
);
82 BOOST_TEST( X::instances
== 2 );
84 BOOST_TEST( X::instances
== 1 );
85 BOOST_TEST( p
.get() == 0 );
87 boost::shared_ptr
<void> p3( new X
);
88 BOOST_TEST( X::instances
== 2 );
90 BOOST_TEST( X::instances
== 1 );
91 BOOST_TEST( p2
.get() == 0 );
94 BOOST_TEST( X::instances
== 0 );
97 return boost::report_errors();
100 #else // defined( BOOST_NO_CXX11_RVALUE_REFERENCES )