2 // auto_ptr_rv_test.cpp
4 // Copyright (c) 2006 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>
17 static long instances;
29 static std::auto_ptr<X> create()
31 return std::auto_ptr<X>( new X );
37 X & operator=( X const & );
40 long X::instances = 0;
44 BOOST_TEST( X::instances == 0 );
47 boost::shared_ptr<X> p( X::create() );
48 BOOST_TEST( X::instances == 1 );
51 BOOST_TEST( X::instances == 1 );
54 BOOST_TEST( X::instances == 0 );
57 BOOST_TEST( X::instances == 1 );
60 BOOST_TEST( X::instances == 0 );
63 boost::shared_ptr<X const> p( X::create() );
64 BOOST_TEST( X::instances == 1 );
67 BOOST_TEST( X::instances == 1 );
70 BOOST_TEST( X::instances == 0 );
73 BOOST_TEST( X::instances == 1 );
76 BOOST_TEST( X::instances == 0 );
79 boost::shared_ptr<void> p( X::create() );
80 BOOST_TEST( X::instances == 1 );
83 BOOST_TEST( X::instances == 1 );
86 BOOST_TEST( X::instances == 0 );
89 BOOST_TEST( X::instances == 1 );
92 BOOST_TEST( X::instances == 0 );
95 boost::shared_ptr<void const> p( X::create() );
96 BOOST_TEST( X::instances == 1 );
99 BOOST_TEST( X::instances == 1 );
102 BOOST_TEST( X::instances == 0 );
105 BOOST_TEST( X::instances == 1 );
108 BOOST_TEST( X::instances == 0 );
110 return boost::report_errors();