1 /*============================================================================= 2 Copyright (c) 2011 Eric Niebler 3 4 Distributed under the Boost Software License, Version 1.0. (See accompanying 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 ==============================================================================*/ 7 #if !defined(BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED) 8 #define BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED 9 10 #include <boost/fusion/support/config.hpp> 11 #include <boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp> 12 #include <boost/fusion/iterator/segmented_iterator.hpp> 13 #include <boost/fusion/view/iterator_range.hpp> 14 #include <boost/fusion/sequence/intrinsic/begin.hpp> 15 #include <boost/fusion/sequence/intrinsic/end.hpp> 16 #include <boost/fusion/sequence/intrinsic/empty.hpp> 17 #include <boost/fusion/container/list/cons.hpp> 18 19 namespace boost { namespace fusion { namespace detail 20 { 21 //auto segmented_begin( seq ) 22 //{ 23 // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) ); 24 //} 25 26 template <typename Sequence, typename Nil_ = fusion::nil_> 27 struct segmented_begin 28 { 29 typedef 30 segmented_iterator< 31 typename segmented_begin_impl<Sequence, Nil_>::type 32 > 33 type; 34 35 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 36 static type call(Sequence& seq) 37 { 38 return type( 39 segmented_begin_impl<Sequence, Nil_>::call(seq, Nil_())); 40 } 41 }; 42 43 }}} 44 45 #endif 46