From c6a6a46db4b245b171c614d2c41fdaa98828f54b Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Wed, 16 Mar 2011 23:47:02 +0000 Subject: [PATCH] [range] - Fix for the demotion of traversal tags supplied by aschoedl. This is mentioned in Trac issue 5061, but has also been reported independently by a few users. [SVN r70040] --- .../detail/demote_iterator_traversal_tag.hpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/boost/range/detail/demote_iterator_traversal_tag.hpp b/include/boost/range/detail/demote_iterator_traversal_tag.hpp index 5d77678..2127de9 100755 --- a/include/boost/range/detail/demote_iterator_traversal_tag.hpp +++ b/include/boost/range/detail/demote_iterator_traversal_tag.hpp @@ -5,6 +5,9 @@ // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // +// Acknowledgements: +// aschoedl supplied a fix to supply the level of interoperability I had +// originally intended, but failed to implement. // // For more information, see http://www.boost.org/libs/range/ // @@ -19,12 +22,12 @@ namespace boost { template -struct demote_iterator_traversal_tag +struct inner_demote_iterator_traversal_tag { }; #define BOOST_DEMOTE_TRAVERSAL_TAG( Tag1, Tag2, ResultTag ) \ -template<> struct demote_iterator_traversal_tag< Tag1 , Tag2 > \ +template<> struct inner_demote_iterator_traversal_tag< Tag1 , Tag2 > \ { \ typedef ResultTag type; \ }; @@ -73,6 +76,15 @@ BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, random_access_traversal #undef BOOST_DEMOTE_TRAVERSAL_TAG +template +struct demote_iterator_traversal_tag + : inner_demote_iterator_traversal_tag< + typename boost::detail::pure_traversal_tag< IteratorTraversalTag1 >::type, + typename boost::detail::pure_traversal_tag< IteratorTraversalTag2 >::type + > +{ +}; + } // namespace range_detail } // namespace boost