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