1 /*============================================================================= 2 Copyright (c) 2005-2012 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_DEQUE_BEGIN_IMPL_09122006_2034) 9 #define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/fusion/container/deque/deque_iterator.hpp> 13 14 namespace boost { namespace fusion 15 { 16 struct deque_tag; 17 18 namespace extension 19 { 20 template<typename T> 21 struct begin_impl; 22 23 template<> 24 struct begin_impl<deque_tag> 25 { 26 template<typename Sequence> 27 struct apply 28 { 29 typedef 30 deque_iterator<Sequence, (Sequence::next_down::value + 1)> 31 type; 32 33 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED callboost::fusion::extension::begin_impl::apply34 static type call(Sequence& seq) 35 { 36 return type(seq); 37 } 38 }; 39 }; 40 } 41 }} 42 43 #endif 44