Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / mpl / map / aux_ / has_key_impl.hpp
1
2 #ifndef BOOST_MPL_MAP_AUX_HAS_KEY_IMPL_HPP_INCLUDED
3 #define BOOST_MPL_MAP_AUX_HAS_KEY_IMPL_HPP_INCLUDED
4
5 // Copyright Aleksey Gurtovoy 2003-2004
6 // Copyright David Abrahams 2003-2004
7 //
8 // Distributed under the Boost Software License, Version 1.0. 
9 // (See accompanying file LICENSE_1_0.txt or copy at 
10 // http://www.boost.org/LICENSE_1_0.txt)
11 //
12 // See http://www.boost.org/libs/mpl for documentation.
13
14 // $Id$
15 // $Date$
16 // $Revision$
17
18 #include <boost/mpl/has_key_fwd.hpp>
19 #include <boost/mpl/map/aux_/tag.hpp>
20 #include <boost/mpl/map/aux_/at_impl.hpp>
21 #include <boost/mpl/void.hpp>
22 #include <boost/mpl/aux_/config/typeof.hpp>
23
24 namespace boost { namespace mpl {
25
26 template<>
27 struct has_key_impl< aux::map_tag >
28 {
29     template< typename Map, typename Key > struct apply
30 #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
31         : is_not_void_< 
32               typename at_impl<aux::map_tag>
33                 ::apply<Map,Key>::type
34             >
35 #else
36         : bool_< ( x_order_impl<Map,Key>::value > 1 ) >
37 #endif
38     {
39     };
40 };
41
42 }}
43
44 #endif // BOOST_MPL_MAP_AUX_HAS_KEY_IMPL_HPP_INCLUDED