/*============================================================================= Copyright (c) 2003 Joel de Guzman Copyright (c) 2004 Peder Holt Use, modification and distribution is subject to 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_SEQUENCE_JOINT_VIEW_HPP) #define FUSION_SEQUENCE_JOINT_VIEW_HPP #include #include #include #include #include #include #include namespace boost { namespace fusion { struct joint_view_tag; template struct joint_view : sequence_base > { typedef as_fusion_sequence view1_converter; typedef typename view1_converter::type view1; typedef as_fusion_sequence view2_converter; typedef typename view2_converter::type view2; typedef joint_view_tag tag; typedef typename meta::begin::type first_type; typedef typename meta::end::type last_type; typedef typename meta::begin::type concat_type; typedef typename meta::end::type concat_last_type; joint_view(View1& view1, View2& view2); first_type first; concat_type concat; concat_last_type concat_last; }; template joint_view::joint_view(View1& view1, View2& view2) : first(fusion::begin(view1)) , concat(fusion::begin(view2)) , concat_last(fusion::end(view2)) {} }} #endif