/*============================================================================= Copyright (c) 2001-2006 Joel de Guzman 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) ==============================================================================*/ #if !defined(FUSION_LOOKUP_KEY_07222005_1248) #define FUSION_LOOKUP_KEY_07222005_1248 #include #include #include #include namespace boost { namespace fusion { struct void_; }} namespace boost { namespace fusion { namespace detail { template struct map_data_type { typedef typename add_reference< typename T::second_type >::type type; }; template <> struct map_data_type { typedef void_& type; }; template struct map_const_data_type { typedef typename add_reference< typename add_const< typename T::second_type >::type >::type type; }; template <> struct map_const_data_type { typedef void_ const& type; }; template struct map_value_type { typedef typename T::second_type type; }; template <> struct map_value_type { typedef void_ type; }; template struct map_key_type { typedef typename T::first_type type; }; template struct map_key_type { typedef unknown_key type; }; template struct map_lookup_key { static RT call(Vector& vec) { return vec.at_impl(mpl::int_()).second; } }; template struct map_lookup_key, Vector> { static void_& call(Vector& vec); // intentionally undefined }; }}} #endif