1 /*============================================================================= 2 Copyright (c) 2001-2011 Joel de Guzman 3 Copyright (c) 2005-2006 Dan Marsden 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 #if !defined(BOOST_FUSION_BEGIN_IMPL_20060222_2042) 9 #define BOOST_FUSION_BEGIN_IMPL_20060222_2042 10 11 #include "../example_struct_iterator.hpp" 12 13 namespace example 14 { 15 struct example_sequence_tag; 16 } 17 18 namespace boost { namespace fusion { 19 20 namespace extension 21 { 22 template<typename Tag> 23 struct begin_impl; 24 25 template<> 26 struct begin_impl<example::example_sequence_tag> 27 { 28 template<typename Sequence> 29 struct apply 30 { 31 typedef example::example_struct_iterator<Sequence, 0> type; 32 33 static type callboost::fusion::extension::begin_impl::apply34 call(Sequence& seq) 35 { 36 return type(seq); 37 } 38 }; 39 }; 40 } 41 }} 42 43 #endif 44