/* Copyright 2014 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #include #if !defined(BOOST_NO_CXX11_SMART_PTR) #include #include class type { public: static unsigned instances; type(int v1 = 0, int v2 = 0, int v3 = 0, int v4 = 0, int v5 = 0, int v6 = 0, int v7 = 0, int v8 = 0, int v9 = 0) : sum_(v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9) { ++instances; } ~type() { --instances; } int sum() const { return sum_; } private: int sum_; type(const type&); type& operator=(const type&); }; unsigned type::instances = 0; int main() { BOOST_TEST(type::instances == 0); { std::unique_ptr result = boost::make_unique(); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 0); result.reset(); BOOST_TEST(type::instances == 0); } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) { std::unique_ptr result = boost::make_unique(1); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4, 5); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4 + 5); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4, 5, 6); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4 + 5 + 6); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4, 5, 6, 7); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4 + 5 + 6 + 7); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4, 5, 6, 7, 8); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8); result.reset(); BOOST_TEST(type::instances == 0); } { std::unique_ptr result = boost::make_unique(1, 2, 3, 4, 5, 6, 7, 8, 9); BOOST_TEST(result.get() != 0); BOOST_TEST(type::instances == 1); BOOST_TEST(result->sum() == 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9); result.reset(); BOOST_TEST(type::instances == 0); } #endif return boost::report_errors(); } #else int main() { return 0; } #endif