1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // Copyright Peter Dimov and David Abrahams 2002.
- // 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)
- #ifndef GET_POINTER_DWA20021219_HPP
- #define GET_POINTER_DWA20021219_HPP
- #include <boost/config.hpp>
- // In order to avoid circular dependencies with Boost.TR1
- // we make sure that our include of <memory> doesn't try to
- // pull in the TR1 headers: that's why we use this header
- // rather than including <memory> directly:
- #include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
- namespace boost {
- // get_pointer(p) extracts a ->* capable pointer from p
- template<class T> T * get_pointer(T * p)
- {
- return p;
- }
- // get_pointer(shared_ptr<T> const & p) has been moved to shared_ptr.hpp
- #if !defined( BOOST_NO_AUTO_PTR )
- #if defined( __GNUC__ ) && (defined( __GXX_EXPERIMENTAL_CXX0X__ ) || (__cplusplus >= 201103L))
- #if defined( BOOST_GCC )
- #if BOOST_GCC >= 40600
- #define BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
- #endif // BOOST_GCC >= 40600
- #elif defined( __clang__ ) && defined( __has_warning )
- #if __has_warning("-Wdeprecated-declarations")
- #define BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
- #endif // __has_warning("-Wdeprecated-declarations")
- #endif
- #endif // defined( __GNUC__ ) && (defined( __GXX_EXPERIMENTAL_CXX0X__ ) || (__cplusplus >= 201103L))
- #if defined( BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS )
- // Disable libstdc++ warnings about std::auto_ptr being deprecated in C++11 mode
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- #define BOOST_CORE_DETAIL_DISABLED_DEPRECATED_WARNINGS
- #endif
- template<class T> T * get_pointer(std::auto_ptr<T> const& p)
- {
- return p.get();
- }
- #if defined( BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS )
- #pragma GCC diagnostic pop
- #undef BOOST_CORE_DETAIL_DISABLE_LIBSTDCXX_DEPRECATED_WARNINGS
- #endif
- #endif // !defined( BOOST_NO_AUTO_PTR )
- #if !defined( BOOST_NO_CXX11_SMART_PTR )
- template<class T> T * get_pointer( std::unique_ptr<T> const& p )
- {
- return p.get();
- }
- template<class T> T * get_pointer( std::shared_ptr<T> const& p )
- {
- return p.get();
- }
- #endif
- } // namespace boost
- #endif // GET_POINTER_DWA20021219_HPP
|