From ee2d3a65969b8e6b9fc49cb00d76746bfee81ed1 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Thu, 30 Jun 2022 23:35:58 +0300 Subject: [PATCH] Made output_proxy private and made its internals private. --- .../iterator/function_output_iterator.hpp | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/include/boost/iterator/function_output_iterator.hpp b/include/boost/iterator/function_output_iterator.hpp index ec72338..2708bbd 100644 --- a/include/boost/iterator/function_output_iterator.hpp +++ b/include/boost/iterator/function_output_iterator.hpp @@ -19,20 +19,11 @@ namespace iterators { template class function_output_iterator { + private: typedef function_output_iterator self; - public: - typedef std::output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - explicit function_output_iterator() {} - - explicit function_output_iterator(const UnaryFunction& f) - : m_f(f) {} - - struct output_proxy { + class output_proxy { + public: explicit output_proxy(UnaryFunction& f) : m_f(f) { } #ifdef BOOST_NO_CXX11_RVALUE_REFERENCES @@ -47,11 +38,26 @@ namespace iterators { } #endif + private: UnaryFunction& m_f; }; + + public: + typedef std::output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + explicit function_output_iterator() {} + + explicit function_output_iterator(const UnaryFunction& f) + : m_f(f) {} + output_proxy operator*() { return output_proxy(m_f); } self& operator++() { return *this; } self& operator++(int) { return *this; } + private: UnaryFunction m_f; };