/*============================================================================= 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_SET_09162005_1104) #define FUSION_SET_09162005_1104 #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 set : sequence_base > { struct category : forward_traversal_tag, associative_tag {}; typedef set_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_SET_SIZE, T)> storage_type; typedef typename storage_type::size size; set() : data() {} template set(Sequence const& rhs) : data(rhs) {} #include template set& 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