diff --git a/include/boost/pending/iterator_adaptors.hpp b/include/boost/pending/iterator_adaptors.hpp index f454d10..cd1ee5e 100644 --- a/include/boost/pending/iterator_adaptors.hpp +++ b/include/boost/pending/iterator_adaptors.hpp @@ -221,13 +221,18 @@ inline bool operator<=(const iterator_comparisons& xb, namespace detail { - // Dummy version for iterators that don't support member access - template + // Dummy versions for iterators that don't support member access + template inline typename Iter::pointer - operator_arrow(const Iter&, Cat) { - typedef typename Iter::pointer Pointer; - return Pointer(); + operator_arrow(const Iter&, std::input_iterator_tag) { + return typename Iter::pointer(); } + template + inline typename Iter::pointer + operator_arrow(const Iter&, std::output_iterator_tag) { + return typename Iter::pointer(); + } + // Real version template inline typename Iter::pointer @@ -236,8 +241,10 @@ namespace detail { } // Dummy version for non-random access iterators - template - inline void advance_impl(Iter&, Diff, Cat) { } + template + inline void advance_impl(Iter&, Diff, std::input_iterator_tag) { } + template + inline void advance_impl(Iter&, Diff, std::output_iterator_tag) { } // Real version template @@ -250,9 +257,11 @@ namespace detail { #endif } - // Dummy version for non-bidirectional iterators - template - inline void decrement_impl(Iter&, Cat) { } + // Dummy versions for non-bidirectional iterators + template + inline void decrement_impl(Iter&, std::input_iterator_tag) { } + template + inline void decrement_impl(Iter&, std::output_iterator_tag) { } // Real version template