From 426e0c39a8d52d57ea3e73abf981730fd5f12caa Mon Sep 17 00:00:00 2001 From: Neil Groves Date: Sun, 15 Sep 2013 22:15:12 +0000 Subject: [PATCH] [boost][range] - changed join_iterator reference type handling to address several user observations and failing clang builds. [SVN r85691] --- include/boost/range/detail/join_iterator.hpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/include/boost/range/detail/join_iterator.hpp b/include/boost/range/detail/join_iterator.hpp index 70ecf65..d025c81 100644 --- a/include/boost/range/detail/join_iterator.hpp +++ b/include/boost/range/detail/join_iterator.hpp @@ -23,6 +23,10 @@ #include #include #include +#include +#include +#include +#include #include 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::type >::type >::value, - typename add_reference< - typename add_const< - typename remove_reference< - typename iterator_reference::type - >::type - >::type + typename add_const< + typename iterator_reference::type >::type, typename iterator_reference::type >::type