1 #ifndef BOOST_POINTER_TO_OTHER_HPP_INCLUDED 2 #define BOOST_POINTER_TO_OTHER_HPP_INCLUDED 3 4 // 5 // pointer_to_other.hpp 6 // 7 // (C) Copyright Ion Gaztanaga 2005. 8 // Copyright (c) 2005 Peter Dimov. 9 // 10 // Distributed under the Boost Software License, Version 1.0. 11 // 12 // (See accompanying file LICENSE_1_0.txt or copy at 13 // http://www.boost.org/LICENSE_1_0.txt) 14 // 15 // See http://www.boost.org/libs/smart_ptr/ for documentation. 16 // 17 18 namespace boost 19 { 20 21 // Defines the same pointer type (raw or smart) to another pointee type 22 23 template<class T, class U> 24 struct pointer_to_other; 25 26 template<class T, class U, 27 template<class> class Sp> 28 struct pointer_to_other< Sp<T>, U > 29 { 30 typedef Sp<U> type; 31 }; 32 33 template<class T, class T2, class U, 34 template<class, class> class Sp> 35 struct pointer_to_other< Sp<T, T2>, U > 36 { 37 typedef Sp<U, T2> type; 38 }; 39 40 template<class T, class T2, class T3, class U, 41 template<class, class, class> class Sp> 42 struct pointer_to_other< Sp<T, T2, T3>, U > 43 { 44 typedef Sp<U, T2, T3> type; 45 }; 46 47 template<class T, class U> 48 struct pointer_to_other< T*, U > 49 { 50 typedef U* type; 51 }; 52 53 } // namespace boost 54 55 #endif // #ifndef BOOST_POINTER_TO_OTHER_HPP_INCLUDED 56