[boost][range] - changed join_iterator reference type handling to address several user observations and failing clang builds.

[SVN r85691]
This commit is contained in:
Neil Groves
2013-09-15 22:15:12 +00:00
parent f662a07bcc
commit 426e0c39a8

View File

@ -23,6 +23,10 @@
#include <boost/range/empty.hpp>
#include <boost/range/detail/demote_iterator_traversal_tag.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>
namespace boost
@ -71,7 +75,9 @@ public:
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
@ -143,12 +149,8 @@ template<typename Iterator1
typename iterator_reference<Iterator2>::type
>::type
>::value,
typename add_reference<
typename add_const<
typename remove_reference<
typename iterator_reference<Iterator2>::type
>::type
>::type
typename add_const<
typename iterator_reference<Iterator1>::type
>::type,
typename iterator_reference<Iterator1>::type
>::type