• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
11 #include <boost/get_pointer.hpp>
12 #include <boost/core/lightweight_test.hpp>
13 #include <memory>
14 
15 struct X
16 {
17 };
18 
main()19 int main()
20 {
21     using boost::get_pointer;
22 
23     {
24         X * p = new X;
25         BOOST_TEST( get_pointer( p ) == p );
26 
27         delete p;
28     }
29 
30     {
31         X * p = 0;
32         BOOST_TEST( get_pointer( p ) == 0 );
33     }
34 
35 #if !defined( BOOST_NO_AUTO_PTR )
36 
37     {
38         std::auto_ptr< X > p( new X );
39         BOOST_TEST( get_pointer( p ) == p.get() );
40     }
41 
42     {
43         std::auto_ptr< X > p;
44         BOOST_TEST( get_pointer( p ) == 0 );
45     }
46 
47 #endif
48 
49 #if !defined( BOOST_NO_CXX11_SMART_PTR )
50 
51     {
52         std::unique_ptr< X > p( new X );
53         BOOST_TEST( get_pointer( p ) == p.get() );
54     }
55 
56     {
57         std::unique_ptr< X > p;
58         BOOST_TEST( get_pointer( p ) == 0 );
59     }
60 
61     {
62         std::shared_ptr< X > p( new X );
63         BOOST_TEST( get_pointer( p ) == p.get() );
64     }
65 
66     {
67         std::shared_ptr< X > p;
68         BOOST_TEST( get_pointer( p ) == 0 );
69     }
70 
71 #endif
72 
73     return boost::report_errors();
74 }
75