2 // shared_ptr_rv_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>
16 static long instances;
28 static boost::shared_ptr<X> create()
30 return boost::shared_ptr<X>( new X );
36 X & operator=( X const & );
39 long X::instances = 0;
43 BOOST_TEST( X::instances == 0 );
46 boost::shared_ptr<X> p( X::create() );
47 BOOST_TEST( X::instances == 1 );
50 BOOST_TEST( X::instances == 1 );
53 BOOST_TEST( X::instances == 0 );
56 BOOST_TEST( X::instances == 1 );
59 BOOST_TEST( X::instances == 0 );
62 boost::shared_ptr<X const> p( X::create() );
63 BOOST_TEST( X::instances == 1 );
66 BOOST_TEST( X::instances == 1 );
69 BOOST_TEST( X::instances == 0 );
72 BOOST_TEST( X::instances == 1 );
75 BOOST_TEST( X::instances == 0 );
78 boost::shared_ptr<void> p( X::create() );
79 BOOST_TEST( X::instances == 1 );
82 BOOST_TEST( X::instances == 1 );
85 BOOST_TEST( X::instances == 0 );
88 BOOST_TEST( X::instances == 1 );
91 BOOST_TEST( X::instances == 0 );
94 boost::shared_ptr<void const> p( X::create() );
95 BOOST_TEST( X::instances == 1 );
98 BOOST_TEST( X::instances == 1 );
101 BOOST_TEST( X::instances == 0 );
104 BOOST_TEST( X::instances == 1 );
107 BOOST_TEST( X::instances == 0 );
109 return boost::report_errors();