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

source code of boost/libs/smart_ptr/test/shared_ptr_fn_test.cpp