diff --git a/include/boost/iterator_adaptors.hpp b/include/boost/iterator_adaptors.hpp index 02cb09f..e190e2d 100644 --- a/include/boost/iterator_adaptors.hpp +++ b/include/boost/iterator_adaptors.hpp @@ -177,6 +177,19 @@ public: iterator_adaptor(const Iterator& iter, const Policies& p = Policies()) : m_iter_p(iter, p) {} +#ifdef BOOST_MSVC6_MEMBER_TEMPLATES + template + iterator_adaptor(const iterator_adaptor& rhs) + : m_iter_p(rhs.iter(), rhs.policies()) {} + + template + Self& operator=(const iterator_adaptor& rhs) + { + iter() = rhs.iter(); + policies() = rhs.policies(); + return *this; + } +#else template iterator_adaptor(const iterator_adaptor& rhs) : m_iter_p(rhs.iter(), rhs.policies()) {} @@ -188,6 +201,7 @@ public: policies() = rhs.policies(); return *this; } +#endif reference operator*() const { return policies().dereference(type(), iter()); @@ -362,7 +376,7 @@ struct transform_iterator_traits { template #else class Traits @@ -392,7 +406,7 @@ struct indirect_iterator_policies : public default_iterator_policies }; template , class ConstTraits = std::iterator_traits #else