1 /* 2 Copyright 2014 Glen Joseph Fernandes 3 (glenjofe@gmail.com) 4 5 Distributed under the Boost Software License, Version 1.0. 6 (http://www.boost.org/LICENSE_1_0.txt) 7 */ 8 #include <boost/config.hpp> 9 #if !defined(BOOST_NO_CXX11_SMART_PTR) 10 #include <boost/detail/lightweight_test.hpp> 11 #include <boost/smart_ptr/make_unique.hpp> 12 13 class type { 14 public: 15 static unsigned instances; 16 type()17 type() { 18 ++instances; 19 } 20 ~type()21 ~type() { 22 --instances; 23 } 24 25 private: 26 type(const type&); 27 type& operator=(const type&); 28 }; 29 30 unsigned type::instances = 0; 31 main()32int main() 33 { 34 { 35 std::unique_ptr<int> result = boost::make_unique<int>(); 36 BOOST_TEST(result.get() != 0); 37 BOOST_TEST(*result == 0); 38 } 39 { 40 std::unique_ptr<const int> result = 41 boost::make_unique<const int>(); 42 BOOST_TEST(result.get() != 0); 43 BOOST_TEST(*result == 0); 44 } 45 BOOST_TEST(type::instances == 0); 46 { 47 std::unique_ptr<type> result = 48 boost::make_unique<type>(); 49 BOOST_TEST(result.get() != 0); 50 BOOST_TEST(type::instances == 1); 51 result.reset(); 52 BOOST_TEST(type::instances == 0); 53 } 54 BOOST_TEST(type::instances == 0); 55 { 56 std::unique_ptr<const type> result = 57 boost::make_unique<const type>(); 58 BOOST_TEST(result.get() != 0); 59 BOOST_TEST(type::instances == 1); 60 result.reset(); 61 BOOST_TEST(type::instances == 0); 62 } 63 return boost::report_errors(); 64 } 65 #else main()66int main() 67 { 68 return 0; 69 } 70 #endif 71