/*============================================================================= Copyright (c) 2005 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_07212005_1106) #define FUSION_MAP_07212005_1106 #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace boost { namespace fusion { struct void_; struct fusion_sequence_tag; template struct map : sequence_base > { struct category : forward_traversal_tag, associative_tag {}; typedef map_tag fusion_tag; typedef fusion_sequence_tag tag; // this gets picked up by MPL typedef mpl::false_ is_view; typedef vector< BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> storage_type; typedef typename storage_type::size size; map() : data() {} template map(Sequence const& rhs) : data(rhs) {} #include template map& operator=(T const& rhs) { data = rhs; return *this; } storage_type& get_data() { return data; } storage_type const& get_data() const { return data; } private: storage_type data; }; }} #endif