1 /*=============================================================================
2     Copyright (c) 2010 Christopher Schmidt
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 
8 #ifndef BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP
9 #define BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP
10 
11 #include <boost/fusion/support/config.hpp>
12 #include <boost/fusion/iterator/basic_iterator.hpp>
13 
14 namespace boost { namespace fusion { namespace extension
15 {
16     template<typename>
17     struct begin_impl;
18 
19     template <>
20     struct begin_impl<po_array_tag>
21     {
22         template <typename Seq>
23         struct apply
24         {
25             typedef
26                 basic_iterator<
27                     po_array_iterator_tag
28                   , random_access_traversal_tag
29                   , Seq
30                   , 0
31                 >
32             type;
33 
34             BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
35             static type
callboost::fusion::extension::begin_impl::apply36             call(Seq& seq)
37             {
38                 return type(seq,0);
39             }
40         };
41     };
42 }}}
43 
44 #endif
45