Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:33:20

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Joel de Guzman
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007 #if !defined(FUSION_VALUE_AT_IMPL_07172005_0952)
0008 #define FUSION_VALUE_AT_IMPL_07172005_0952
0009 
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/support/detail/access.hpp>
0012 #include <boost/type_traits/is_const.hpp>
0013 #include <boost/mpl/eval_if.hpp>
0014 #include <boost/mpl/bool.hpp>
0015 
0016 namespace boost { namespace fusion
0017 {
0018     struct cons_tag;
0019 
0020     namespace extension
0021     {
0022         template <typename Tag>
0023         struct value_at_impl;
0024 
0025         template <>
0026         struct value_at_impl<cons_tag>
0027         {
0028             template <typename Sequence, typename N>
0029             struct apply
0030             {
0031                 typedef typename
0032                     mpl::eval_if<
0033                         mpl::bool_<N::value == 0>
0034                       , mpl::identity<typename Sequence::car_type>
0035                       , apply<typename Sequence::cdr_type, mpl::int_<N::value-1> >
0036                     >::type
0037                 type;
0038             };
0039         };
0040     }
0041 }}
0042 
0043 #endif