From 9b7b9db979b80cbc8e62c52c35be40ca8fc7d0b1 Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Sun, 13 Jun 2010 01:22:41 +0000 Subject: [PATCH] Translate fusion iterator categories to MPL iteraotr categories for fusion_iterator. Fixes #3204. [SVN r62889] --- .../fusion/iterator/mpl/fusion_iterator.hpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp index 150db549..b18ef8f0 100644 --- a/include/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/include/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -16,6 +16,27 @@ #include #include #include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + +template +struct to_mpl_category { + typedef typename mpl::eval_if< + is_base_of, + mpl::random_access_iterator_tag, + mpl::eval_if< + is_base_of, + mpl::bidirectional_iterator_tag, + mpl::forward_iterator_tag + > + >::type type; +}; + +}}} namespace boost { namespace mpl { @@ -23,7 +44,8 @@ namespace boost { namespace mpl struct fusion_iterator { typedef typename fusion::result_of::value_of::type type; - typedef typename fusion::traits::category_of::type category; + typedef typename fusion::traits::category_of::type fusion_category; + typedef typename fusion::detail::to_mpl_category::type category; typedef Iterator iterator; };