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_27122005_1117) 9 #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/fusion/adapted/boost_array/array_iterator.hpp> 13 14 namespace boost { namespace fusion { 15 16 struct boost_array_tag; 17 18 namespace extension 19 { 20 template<typename T> 21 struct begin_impl; 22 23 template <> 24 struct begin_impl<boost_array_tag> 25 { 26 template <typename Sequence> 27 struct apply 28 { 29 typedef array_iterator<Sequence, 0> type; 30 31 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 32 static type callboost::fusion::extension::begin_impl::apply33 call(Sequence& v) 34 { 35 return type(v); 36 } 37 }; 38 }; 39 } 40 }} 41 42 #endif 43