1 // 2 // Boost.Pointer Container 3 // 4 // Copyright Thorsten Ottosen 2008. Use, modification and 5 // distribution is subject to the Boost Software License, Version 6 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // 9 // For more information, see http://www.boost.org/libs/ptr_container/ 10 // 11 12 #ifndef BOOST_PTR_CONTAINER_DETAIL_META_FUNCTIONS 13 #define BOOST_PTR_CONTAINER_DETAIL_META_FUNCTIONS 14 15 #include <boost/mpl/identity.hpp> 16 #include <boost/mpl/eval_if.hpp> 17 18 namespace boost 19 { 20 namespace ptr_container_detail 21 { 22 template< class T > 23 struct select_value_compare 24 { 25 typedef typename T::value_compare type; 26 }; 27 28 template< class T > 29 struct select_key_compare 30 { 31 typedef typename T::key_compare type; 32 }; 33 34 template< class T > 35 struct select_hasher 36 { 37 typedef typename T::hasher type; 38 }; 39 40 template< class T > 41 struct select_key_equal 42 { 43 typedef typename T::key_equal type; 44 }; 45 46 template< class T > 47 struct select_iterator 48 { 49 typedef typename T::iterator type; 50 }; 51 52 template< class T > 53 struct select_local_iterator 54 { 55 typedef typename T::local_iterator type; 56 }; 57 58 template< class T > 59 struct select_const_local_iterator 60 { 61 typedef typename T::const_local_iterator type; 62 }; 63 } 64 } 65 66 #endif 67