blob: 24ea6c7f01abbef379a1573c34c42835715adf0e [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001// 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 <ndnboost/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 <ndnboost/config/no_tr1/memory.hpp> // std::auto_ptr
15
16namespace ndnboost {
17
18// get_pointer(p) extracts a ->* capable pointer from p
19
20template<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
27template<class T> T * get_pointer(std::auto_ptr<T> const& p)
28{
29 return p.get();
30}
31
32#if !defined( BOOST_NO_CXX11_SMART_PTR )
33
34template<class T> T * get_pointer( std::unique_ptr<T> const& p )
35{
36 return p.get();
37}
38
39template<class T> T * get_pointer( std::shared_ptr<T> const& p )
40{
41 return p.get();
42}
43
44#endif
45
46} // namespace ndnboost
47
48#endif // GET_POINTER_DWA20021219_HPP