]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/shared_ptr_fn_test.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / smart_ptr / test / shared_ptr_fn_test.cpp
1 //
2 // shared_ptr_fn_test.cpp
3 //
4 // Copyright 2017 Peter Dimov
5 //
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
9 //
10
11 #include <boost/shared_ptr.hpp>
12 #include <boost/weak_ptr.hpp>
13 #include <boost/core/lightweight_test.hpp>
14
15 static void f()
16 {
17 }
18
19 struct null_deleter
20 {
21 template<class Y> void operator()( Y* ) {}
22 };
23
24 int main()
25 {
26 boost::shared_ptr<void()> pf( f, null_deleter() );
27
28 BOOST_TEST( pf.get() == f );
29 BOOST_TEST_EQ( pf.use_count(), 1 );
30 BOOST_TEST( boost::get_deleter<null_deleter>( pf ) != 0 );
31
32 boost::weak_ptr<void()> wp( pf );
33
34 BOOST_TEST( wp.lock().get() == f );
35 BOOST_TEST_EQ( wp.use_count(), 1 );
36
37 pf.reset();
38
39 BOOST_TEST( wp.lock().get() == 0 );
40 BOOST_TEST_EQ( wp.use_count(), 0 );
41
42 return boost::report_errors();
43 }