get_pointer.hpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. #include <boost/config.hpp>
  8. // In order to avoid circular dependencies with Boost.TR1
  9. // we make sure that our include of <memory> doesn't try to
  10. // pull in the TR1 headers: that's why we use this header
  11. // rather than including <memory> directly:
  12. #include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
  13. namespace boost {
  14. // get_pointer(p) extracts a ->* capable pointer from p
  15. template<class T> T * get_pointer(T * p)
  16. {
  17. return p;
  18. }
  19. // get_pointer(shared_ptr<T> const & p) has been moved to shared_ptr.hpp
  20. template<class T> T * get_pointer(std::auto_ptr<T> const& p)
  21. {
  22. return p.get();
  23. }
  24. #if !defined( BOOST_NO_CXX11_SMART_PTR )
  25. template<class T> T * get_pointer( std::unique_ptr<T> const& p )
  26. {
  27. return p.get();
  28. }
  29. template<class T> T * get_pointer( std::shared_ptr<T> const& p )
  30. {
  31. return p.get();
  32. }
  33. #endif
  34. } // namespace boost
  35. #endif // GET_POINTER_DWA20021219_HPP