]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/core/include/boost/get_pointer.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / core / include / boost / get_pointer.hpp
1 // Copyright Peter Dimov and David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef GET_POINTER_DWA20021219_HPP
6 #define GET_POINTER_DWA20021219_HPP
7
8 #include <boost/config.hpp>
9
10 // In order to avoid circular dependencies with Boost.TR1
11 // we make sure that our include of <memory> doesn't try to
12 // pull in the TR1 headers: that's why we use this header
13 // rather than including <memory> directly:
14 #include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
15
16 namespace boost {
17
18 // get_pointer(p) extracts a ->* capable pointer from p
19
20 template<class T> T * get_pointer(T * p)
21 {
22 return p;
23 }
24
25 // get_pointer(shared_ptr<T> const & p) has been moved to shared_ptr.hpp
26
27 #if !defined( BOOST_NO_AUTO_PTR )
28
29 #if defined( __GNUC__ ) && (defined( __GXX_EXPERIMENTAL_CXX0X__ ) || (__cplusplus >= 201103L))
30 #if defined( BOOST_GCC )
31 #if BOOST_GCC >= 40600
32 #define BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
33 #endif // BOOST_GCC >= 40600
34 #elif defined( __clang__ ) && defined( __has_warning )
35 #if __has_warning("-Wdeprecated-declarations")
36 #define BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
37 #endif // __has_warning("-Wdeprecated-declarations")
38 #endif
39 #endif // defined( __GNUC__ ) && (defined( __GXX_EXPERIMENTAL_CXX0X__ ) || (__cplusplus >= 201103L))
40
41 #if defined( BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS )
42 // Disable libstdc++ warnings about std::auto_ptr being deprecated in C++11 mode
43 #pragma GCC diagnostic push
44 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
45 #define BOOST_CORE_DETAIL_DISABLED_DEPRECATED_WARNINGS
46 #endif
47
48 template<class T> T * get_pointer(std::auto_ptr<T> const& p)
49 {
50 return p.get();
51 }
52
53 #if defined( BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS )
54 #pragma GCC diagnostic pop
55 #undef BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
56 #endif
57
58 #endif // !defined( BOOST_NO_AUTO_PTR )
59
60 #if !defined( BOOST_NO_CXX11_SMART_PTR )
61
62 template<class T> T * get_pointer( std::unique_ptr<T> const& p )
63 {
64 return p.get();
65 }
66
67 template<class T> T * get_pointer( std::shared_ptr<T> const& p )
68 {
69 return p.get();
70 }
71
72 #endif
73
74 } // namespace boost
75
76 #endif // GET_POINTER_DWA20021219_HPP