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 f()15static void f() 16 { 17 } 18 19 struct null_deleter 20 { operator ()null_deleter21 template<class Y> void operator()( Y* ) {} 22 }; 23 main()24int 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 } 44