summaryrefslogtreecommitdiff
path: root/boost/fusion/container/vector/detail/value_at_impl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/container/vector/detail/value_at_impl.hpp')
-rw-r--r--boost/fusion/container/vector/detail/value_at_impl.hpp14
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;
};
};
}