shared_ptr_fn_test.cpp 884 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. #include <boost/shared_ptr.hpp>
  11. #include <boost/weak_ptr.hpp>
  12. #include <boost/core/lightweight_test.hpp>
  13. static void f()
  14. {
  15. }
  16. struct null_deleter
  17. {
  18. template<class Y> void operator()( Y* ) {}
  19. };
  20. int main()
  21. {
  22. boost::shared_ptr<void()> pf( f, null_deleter() );
  23. BOOST_TEST( pf.get() == f );
  24. BOOST_TEST_EQ( pf.use_count(), 1 );
  25. BOOST_TEST( boost::get_deleter<null_deleter>( pf ) != 0 );
  26. boost::weak_ptr<void()> wp( pf );
  27. BOOST_TEST( wp.lock().get() == f );
  28. BOOST_TEST_EQ( wp.use_count(), 1 );
  29. pf.reset();
  30. BOOST_TEST( wp.lock().get() == 0 );
  31. BOOST_TEST_EQ( wp.use_count(), 0 );
  32. return boost::report_errors();
  33. }