File indexing completed on 2025-01-18 09:34:40
0001
0002
0003
0004
0005
0006
0007 #ifndef FUSION_VALUE_AT_IMPL_16122014_1641
0008 #define FUSION_VALUE_AT_IMPL_16122014_1641
0009
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/container/vector/detail/config.hpp>
0012
0013
0014
0015
0016 #if !defined(BOOST_FUSION_HAS_VARIADIC_VECTOR)
0017 # include <boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp>
0018 #else
0019
0020
0021
0022
0023 #include <boost/fusion/container/vector/vector_fwd.hpp>
0024 #include <boost/type_traits/declval.hpp>
0025 #include <boost/mpl/identity.hpp>
0026
0027 namespace boost { namespace fusion
0028 {
0029 struct vector_tag;
0030
0031 namespace vector_detail
0032 {
0033 template <std::size_t I, typename T>
0034 struct store;
0035
0036 template <std::size_t N, typename U>
0037 static inline BOOST_FUSION_GPU_ENABLED
0038 mpl::identity<U> value_at_impl(store<N, U> const volatile*);
0039 }
0040
0041 namespace extension
0042 {
0043 template <typename Tag>
0044 struct value_at_impl;
0045
0046 template <>
0047 struct value_at_impl<vector_tag>
0048 {
0049 template <typename Sequence, typename N>
0050 struct apply : BOOST_FUSION_DECLTYPE_N3031((
0051 vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())
0052 ))
0053 {};
0054 };
0055 }
0056 }}
0057
0058 #endif
0059 #endif
0060