diff --git a/include/boost/iostreams/detail/adapter/concept_adapter.hpp b/include/boost/iostreams/detail/adapter/concept_adapter.hpp index 69a911565..a1a62f9ce 100644 --- a/include/boost/iostreams/detail/adapter/concept_adapter.hpp +++ b/include/boost/iostreams/detail/adapter/concept_adapter.hpp @@ -66,6 +66,8 @@ class concept_adapter { { BOOST_STATIC_ASSERT(is_std_io::value); } explicit concept_adapter(const T& t) : t_(t) { BOOST_STATIC_ASSERT(!is_std_io::value); } + concept_adapter(const concept_adapter& other) : t_(other.t_) + { BOOST_STATIC_ASSERT(!is_std_io::value); } T& operator*() { return t_; } T* operator->() { return &t_; } diff --git a/include/boost/iostreams/detail/functional.hpp b/include/boost/iostreams/detail/functional.hpp index 61c7a371c..806afc1b3 100644 --- a/include/boost/iostreams/detail/functional.hpp +++ b/include/boost/iostreams/detail/functional.hpp @@ -113,6 +113,9 @@ class member_close_operation { member_close_operation(T& t, BOOST_IOS::openmode which) : t_(t), which_(which) { } + member_close_operation(const member_close_operation& other) + : t_(other.t_), which_(other.which_) + { } void operator()() const { t_.close(which_); } private: BOOST_DELETED_FUNCTION(member_close_operation& operator=(const member_close_operation&)) @@ -131,6 +134,7 @@ template class reset_operation { public: reset_operation(T& t) : t_(t) { } + reset_operation(const reset_operation& other) : t_(other.t_) { } void operator()() const { t_.reset(); } private: BOOST_DELETED_FUNCTION(reset_operation& operator=(const reset_operation&))