get_pointer_test.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //
  2. // get_pointer_test.cpp
  3. //
  4. // Copyright 2014, 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/get_pointer.hpp>
  11. #include <boost/core/lightweight_test.hpp>
  12. #include <memory>
  13. struct X
  14. {
  15. };
  16. int main()
  17. {
  18. using boost::get_pointer;
  19. {
  20. X * p = new X;
  21. BOOST_TEST( get_pointer( p ) == p );
  22. delete p;
  23. }
  24. {
  25. X * p = 0;
  26. BOOST_TEST( get_pointer( p ) == 0 );
  27. }
  28. #if !defined( BOOST_NO_AUTO_PTR )
  29. {
  30. std::auto_ptr< X > p( new X );
  31. BOOST_TEST( get_pointer( p ) == p.get() );
  32. }
  33. {
  34. std::auto_ptr< X > p;
  35. BOOST_TEST( get_pointer( p ) == 0 );
  36. }
  37. #endif
  38. #if !defined( BOOST_NO_CXX11_SMART_PTR )
  39. {
  40. std::unique_ptr< X > p( new X );
  41. BOOST_TEST( get_pointer( p ) == p.get() );
  42. }
  43. {
  44. std::unique_ptr< X > p;
  45. BOOST_TEST( get_pointer( p ) == 0 );
  46. }
  47. {
  48. std::shared_ptr< X > p( new X );
  49. BOOST_TEST( get_pointer( p ) == p.get() );
  50. }
  51. {
  52. std::shared_ptr< X > p;
  53. BOOST_TEST( get_pointer( p ) == 0 );
  54. }
  55. #endif
  56. return boost::report_errors();
  57. }