// // get_deleter_test.cpp // // Copyright (c) 2002 Peter Dimov // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // #include #include struct deleter { int data; deleter(): data(0) { } void operator()(void *) { BOOST_TEST(data == 17041); } }; struct deleter2 { }; struct X { }; int main() { { boost::shared_ptr p; BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); } { boost::shared_ptr p(new X); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); } { X x; boost::shared_ptr p(&x, deleter()); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); BOOST_TEST(boost::get_deleter(p) == 0); deleter * q = boost::get_deleter(p); BOOST_TEST(q != 0); BOOST_TEST(q->data == 0); q->data = 17041; deleter const * r = boost::get_deleter(p); BOOST_TEST(r == q); BOOST_TEST(r->data == 17041); } return boost::report_errors(); }