/*============================================================================= 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_09162005_1111) #define FUSION_LOOKUP_KEY_09162005_1111 #include #include #include #include namespace boost { namespace fusion { struct void_; }} namespace boost { namespace fusion { namespace detail { template struct set_data_type { typedef typename add_reference::type type; }; template <> struct set_data_type { typedef void_& type; }; template struct set_const_data_type { typedef typename add_reference< typename add_const::type >::type type; }; template <> struct set_const_data_type { typedef void_ const& type; }; template struct set_value_type { typedef T type; }; template <> struct set_value_type { typedef void_ type; }; template struct set_key_type { typedef T type; }; template struct set_key_type { typedef unknown_key type; }; template struct set_lookup_key { static RT call(Vector& vec) { return vec.at_impl(mpl::int_()); } }; template struct set_lookup_key, Vector> { static void_& call(Vector& vec); // intentionally undefined }; }}} #endif