diff --git a/include/boost/fusion/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/value_at_impl.hpp index 6c8c41fb..a2b9b2f6 100644 --- a/include/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -23,7 +23,6 @@ /////////////////////////////////////////////////////////////////////////////// #include #include -#include namespace boost { namespace fusion { @@ -31,8 +30,12 @@ namespace boost { namespace fusion namespace vector_detail { - template - struct vector_data; + template + struct store; + + template + static inline BOOST_FUSION_GPU_ENABLED + U value_at_impl(store const volatile*); } namespace extension @@ -46,8 +49,9 @@ namespace boost { namespace fusion template struct apply { - typedef typename boost::remove_cv::type seq; - typedef typename mpl::identity(boost::declval()))>::type::type type; + typedef + decltype(vector_detail::value_at_impl(boost::declval())) + type; }; }; } diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index 3fcea6e7..1d6c5f1f 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -258,10 +258,6 @@ namespace boost { namespace fusion { return at_detail(this); } - - template - static BOOST_FUSION_GPU_ENABLED - mpl::identity value_at_impl(store*); }; } // namespace boost::fusion::vector_detail