]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/smart_ptr/test/shared_ptr_reinterpret_pointer_cast_test.cpp
2 // shared_pointer_reinterpret_pointer_cast_test.cpp
4 // Copyright (c) 2016 Chris Glover
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
11 #include <boost/shared_ptr.hpp>
12 #include <boost/detail/lightweight_test.hpp>
20 boost::shared_ptr
<char> pc
;
22 boost::shared_ptr
<int> pi
= boost::reinterpret_pointer_cast
<int>(pc
);
23 BOOST_TEST(pi
.get() == 0);
25 boost::shared_ptr
<X
> px
= boost::reinterpret_pointer_cast
<X
>(pc
);
26 BOOST_TEST(px
.get() == 0);
30 boost::shared_ptr
<int> pi(new int);
31 boost::shared_ptr
<char> pc
= boost::reinterpret_pointer_cast
<char>(pi
);
33 boost::shared_ptr
<int> pi2
= boost::reinterpret_pointer_cast
<int>(pc
);
34 BOOST_TEST(pi
.get() == pi2
.get());
35 BOOST_TEST(!(pi
< pi2
|| pi2
< pi
));
36 BOOST_TEST(pi
.use_count() == 3);
37 BOOST_TEST(pc
.use_count() == 3);
38 BOOST_TEST(pi2
.use_count() == 3);
42 boost::shared_ptr
<X
> px(new X
);
43 boost::shared_ptr
<char> pc
= boost::reinterpret_pointer_cast
<char>(px
);
45 boost::shared_ptr
<X
> px2
= boost::reinterpret_pointer_cast
<X
>(pc
);
46 BOOST_TEST(px
.get() == px2
.get());
47 BOOST_TEST(!(px
< px2
|| px2
< px
));
48 BOOST_TEST(px
.use_count() == 3);
49 BOOST_TEST(pc
.use_count() == 3);
50 BOOST_TEST(px2
.use_count() == 3);
53 return boost::report_errors();