File indexing completed on 2025-11-04 09:57:19
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 #ifndef BOOST_PHOENIX_FUSION_AT_HPP
0010 #define BOOST_PHOENIX_FUSION_AT_HPP
0011 
0012 #include <boost/phoenix/core/limits.hpp>
0013 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
0014 #include <boost/phoenix/core/expression.hpp>
0015 #include <boost/phoenix/core/meta_grammar.hpp>
0016 #include <boost/type_traits/remove_reference.hpp>
0017     
0018 BOOST_PHOENIX_DEFINE_EXPRESSION(
0019     (boost)(phoenix)(at_c)
0020   , (proto::terminal<proto::_>)
0021     (meta_grammar)
0022 )
0023 
0024 namespace boost { namespace phoenix
0025 {
0026     template <typename Dummy>
0027     struct default_actions::when<rule::at_c, Dummy>
0028         : proto::call<
0029             proto::functional::at(
0030                 evaluator(proto::_child_c<1>)
0031               , proto::_value(proto::_child_c<0>)
0032             )
0033         >
0034     {};
0035 
0036     template <int N, typename Tuple>
0037     inline
0038     typename expression::at_c<mpl::int_<N>, Tuple>::type const
0039     at_c(Tuple const& tuple)
0040     {
0041         return
0042             expression::
0043                 at_c<mpl::int_<N>, Tuple>::
0044                     make(mpl::int_<N>(), tuple);
0045     }
0046 }}
0047 
0048 #endif