diff --git a/include/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp b/include/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp index dc995dde..e9bb9a02 100644 --- a/include/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp +++ b/include/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp @@ -10,7 +10,8 @@ #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #include -#include +#include +#include namespace boost { namespace fusion { namespace extension { @@ -19,8 +20,26 @@ namespace boost { namespace fusion { namespace extension template <> struct deref_data_impl - : deref_impl - {}; + { + template + struct apply + { + typedef typename + result_of::deref_data< + typename result_of::prior< + typename Iterator::first_type + >::type + >::type + type; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static type + call(Iterator const& i) + { + return fusion::deref_data(fusion::prior(i.first)); + } + }; + }; }}} #endif diff --git a/include/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp b/include/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp index d4b728de..c657f9e0 100644 --- a/include/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp +++ b/include/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include namespace boost { namespace fusion { namespace extension { @@ -21,10 +21,17 @@ namespace boost { namespace fusion { namespace extension template <> struct value_of_data_impl { - template + template struct apply - : value_of_impl - {}; + { + typedef typename + result_of::value_of_data< + typename result_of::prior< + typename Iterator::first_type + >::type + >::type + type; + }; }; }}}