forked from boostorg/smart_ptr
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef BOOST_POINTER_TO_OTHER_HPP_INCLUDED
 | 
						|
#define BOOST_POINTER_TO_OTHER_HPP_INCLUDED
 | 
						|
 | 
						|
//
 | 
						|
//  pointer_to_other.hpp
 | 
						|
//
 | 
						|
//  (C) Copyright Ion Gaztanaga 2005.
 | 
						|
//  Copyright (c) 2005 Peter Dimov.
 | 
						|
//
 | 
						|
//  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)
 | 
						|
//
 | 
						|
//  See http://www.boost.org/libs/smart_ptr/pointer_to_other.html
 | 
						|
//
 | 
						|
 | 
						|
namespace boost
 | 
						|
{
 | 
						|
 | 
						|
// Defines the same pointer type (raw or smart) to another pointee type
 | 
						|
 | 
						|
template<class T, class U>
 | 
						|
struct pointer_to_other;
 | 
						|
 | 
						|
template<class T, class U, 
 | 
						|
         template<class> class Sp>
 | 
						|
struct pointer_to_other< Sp<T>, U >
 | 
						|
{
 | 
						|
   typedef Sp<U> type;
 | 
						|
};
 | 
						|
 | 
						|
template<class T, class T2, class U, 
 | 
						|
         template<class, class> class Sp>
 | 
						|
struct pointer_to_other< Sp<T, T2>, U >
 | 
						|
{
 | 
						|
   typedef Sp<U, T2> type;
 | 
						|
};
 | 
						|
 | 
						|
template<class T, class T2, class T3, class U, 
 | 
						|
         template<class, class, class> class Sp>
 | 
						|
struct pointer_to_other< Sp<T, T2, T3>, U >
 | 
						|
{
 | 
						|
   typedef Sp<U, T2, T3> type;
 | 
						|
};
 | 
						|
 | 
						|
template<class T, class U>
 | 
						|
struct pointer_to_other< T*, U >
 | 
						|
{
 | 
						|
   typedef U* type;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace boost
 | 
						|
 | 
						|
#endif // #ifndef BOOST_POINTER_TO_OTHER_HPP_INCLUDED
 |