forked from boostorg/range
[boost][range] - changed join_iterator reference type handling to address several user observations and failing clang builds.
[SVN r85691]
This commit is contained in:
@ -23,6 +23,10 @@
|
|||||||
#include <boost/range/empty.hpp>
|
#include <boost/range/empty.hpp>
|
||||||
#include <boost/range/detail/demote_iterator_traversal_tag.hpp>
|
#include <boost/range/detail/demote_iterator_traversal_tag.hpp>
|
||||||
#include <boost/range/value_type.hpp>
|
#include <boost/range/value_type.hpp>
|
||||||
|
#include <boost/type_traits/add_const.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
#include <boost/type_traits/remove_reference.hpp>
|
||||||
#include <boost/next_prior.hpp>
|
#include <boost/next_prior.hpp>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
@ -71,7 +75,9 @@ public:
|
|||||||
|
|
||||||
Reference dereference(unsigned int selected) const
|
Reference dereference(unsigned int selected) const
|
||||||
{
|
{
|
||||||
return selected ? *m_it2 : *m_it1;
|
if (selected)
|
||||||
|
return *m_it2;
|
||||||
|
return *m_it1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool equal(const join_iterator_union& other, unsigned int selected) const
|
bool equal(const join_iterator_union& other, unsigned int selected) const
|
||||||
@ -143,12 +149,8 @@ template<typename Iterator1
|
|||||||
typename iterator_reference<Iterator2>::type
|
typename iterator_reference<Iterator2>::type
|
||||||
>::type
|
>::type
|
||||||
>::value,
|
>::value,
|
||||||
typename add_reference<
|
typename add_const<
|
||||||
typename add_const<
|
typename iterator_reference<Iterator1>::type
|
||||||
typename remove_reference<
|
|
||||||
typename iterator_reference<Iterator2>::type
|
|
||||||
>::type
|
|
||||||
>::type
|
|
||||||
>::type,
|
>::type,
|
||||||
typename iterator_reference<Iterator1>::type
|
typename iterator_reference<Iterator1>::type
|
||||||
>::type
|
>::type
|
||||||
|
Reference in New Issue
Block a user