/*============================================================================= Copyright (c) 2001-2011 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_MAP_MAIN_07212005_1106) #define FUSION_MAP_MAIN_07212005_1106 #include #include /////////////////////////////////////////////////////////////////////////////// // Without variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// #if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) # include #else /////////////////////////////////////////////////////////////////////////////// // C++11 interface /////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace boost { namespace fusion { struct map_tag; template struct map : detail::map_impl<0, T...>, sequence_base> { typedef map_tag fusion_tag; typedef detail::map_impl<0, T...> base_type; struct category : random_access_traversal_tag, associative_tag {}; typedef mpl::int_ size; typedef mpl::false_ is_view; map() {} template map(Sequence const& seq , typename enable_if>::type* /*dummy*/ = 0) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template map(First const& first, T_ const&... rest) : base_type(first, rest...) {} template map(First& first, T_&... rest) : base_type(first, rest...) {} map& operator=(map const& rhs) { base_type::operator=(rhs.base()); return *this; } template typename enable_if, map&>::type operator=(Sequence const& seq) { base().assign(begin(seq), detail::map_impl_from_iterator()); return *this; } base_type& base() { return *this; } base_type const& base() const { return *this; } }; }} #endif #endif