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()19int 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