56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #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 |