forked from boostorg/range
[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]
This commit is contained in:
@ -5,6 +5,9 @@
|
|||||||
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// 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/
|
// For more information, see http://www.boost.org/libs/range/
|
||||||
//
|
//
|
||||||
@ -19,12 +22,12 @@ namespace boost
|
|||||||
{
|
{
|
||||||
|
|
||||||
template<class IteratorTraversalTag1, class IteratorTraversalTag2>
|
template<class IteratorTraversalTag1, class IteratorTraversalTag2>
|
||||||
struct demote_iterator_traversal_tag
|
struct inner_demote_iterator_traversal_tag
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
#define BOOST_DEMOTE_TRAVERSAL_TAG( Tag1, Tag2, ResultTag ) \
|
#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; \
|
typedef ResultTag type; \
|
||||||
};
|
};
|
||||||
@ -73,6 +76,15 @@ BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, random_access_traversal
|
|||||||
|
|
||||||
#undef BOOST_DEMOTE_TRAVERSAL_TAG
|
#undef BOOST_DEMOTE_TRAVERSAL_TAG
|
||||||
|
|
||||||
|
template<class IteratorTraversalTag1, class IteratorTraversalTag2>
|
||||||
|
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 range_detail
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user