diff options
Diffstat (limited to 'boost/fusion/container/vector/detail/value_at_impl.hpp')
-rw-r--r-- | boost/fusion/container/vector/detail/value_at_impl.hpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/boost/fusion/container/vector/detail/value_at_impl.hpp b/boost/fusion/container/vector/detail/value_at_impl.hpp index 6c8c41fb27..a2b9b2f6ba 100644 --- a/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -23,7 +23,6 @@ /////////////////////////////////////////////////////////////////////////////// #include <boost/fusion/container/vector/vector_fwd.hpp> #include <boost/type_traits/declval.hpp> -#include <boost/type_traits/remove_cv.hpp> namespace boost { namespace fusion { @@ -31,8 +30,12 @@ namespace boost { namespace fusion namespace vector_detail { - template <typename I, typename ...T> - struct vector_data; + template <std::size_t I, typename T> + struct store; + + template <std::size_t N, typename U> + static inline BOOST_FUSION_GPU_ENABLED + U value_at_impl(store<N, U> const volatile*); } namespace extension @@ -46,8 +49,9 @@ namespace boost { namespace fusion template <typename Sequence, typename N> struct apply { - typedef typename boost::remove_cv<Sequence>::type seq; - typedef typename mpl::identity<decltype(seq::template value_at_impl<N::value>(boost::declval<seq*>()))>::type::type type; + typedef + decltype(vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())) + type; }; }; } |