Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:45:47

0001 /*=============================================================================
0002     Copyright (c) 2013 Mateusz Loskot
0003     Copyright (c) 2001-2011 Joel de Guzman
0004     Copyright (c) 2005-2006 Dan Marsden
0005 
0006     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0007     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008 ==============================================================================*/
0009 #if !defined(BOOST_FUSION_STD_ARRAY_END_OF_IMPL_01062013_1700)
0010 #define BOOST_FUSION_STD_ARRAY_END_OF_IMPL_01062013_1700
0011 
0012 #include <boost/fusion/adapted/std_array/std_array_iterator.hpp>
0013 #include <boost/fusion/adapted/std_array/detail/array_size.hpp>
0014 #include <boost/type_traits/remove_const.hpp>
0015 
0016 namespace boost { namespace fusion {
0017 
0018     struct std_array_tag;
0019 
0020     namespace extension
0021     {
0022         template <typename Tag>
0023         struct end_impl;
0024 
0025         template <>
0026         struct end_impl<std_array_tag>
0027         {
0028             template <typename Sequence>
0029             struct apply 
0030             {
0031                 typedef typename remove_const<Sequence>::type seq_type;
0032                 static int const size = std_array_size<seq_type>::value;
0033                 typedef std_array_iterator<Sequence, size> type;
0034 
0035                 static type
0036                 call(Sequence& v)
0037                 {
0038                     return type(v);
0039                 }
0040             };
0041         };
0042     }
0043 }}
0044 
0045 #endif