diff --git a/include/boost/detail/compressed_pair.hpp b/include/boost/detail/compressed_pair.hpp index f305f0a..d562d8a 100644 --- a/include/boost/detail/compressed_pair.hpp +++ b/include/boost/detail/compressed_pair.hpp @@ -132,7 +132,7 @@ namespace details template class compressed_pair_imp - : private ::boost::remove_cv::type + : protected ::boost::remove_cv::type { public: typedef T1 first_type; @@ -155,8 +155,8 @@ namespace details compressed_pair_imp(second_param_type y) : second_(y) {} - first_reference first() {return static_cast(*this);} - first_const_reference first() const {return static_cast(*this);} + first_reference first() {return *this;} + first_const_reference first() const {return *this;} second_reference second() {return second_;} second_const_reference second() const {return second_;} @@ -174,7 +174,7 @@ namespace details template class compressed_pair_imp - : private ::boost::remove_cv::type + : protected ::boost::remove_cv::type { public: typedef T1 first_type; @@ -200,8 +200,8 @@ namespace details first_reference first() {return first_;} first_const_reference first() const {return first_;} - second_reference second() {return static_cast(*this);} - second_const_reference second() const {return static_cast(*this);} + second_reference second() {return *this;} + second_const_reference second() const {return *this;} void swap(::boost::compressed_pair& y) { @@ -217,8 +217,8 @@ namespace details template class compressed_pair_imp - : private ::boost::remove_cv::type, - private ::boost::remove_cv::type + : protected ::boost::remove_cv::type, + protected ::boost::remove_cv::type { public: typedef T1 first_type; @@ -241,11 +241,11 @@ namespace details compressed_pair_imp(second_param_type y) : second_type(y) {} - first_reference first() {return static_cast(*this);} - first_const_reference first() const {return static_cast(*this);} + first_reference first() {return *this;} + first_const_reference first() const {return *this;} - second_reference second() {return static_cast(*this);} - second_const_reference second() const {return static_cast(*this);} + second_reference second() {return *this;} + second_const_reference second() const {return *this;} // // no need to swap empty bases: void swap(::boost::compressed_pair&) {} @@ -260,7 +260,7 @@ namespace details // different objects (albeit both empty). template class compressed_pair_imp - : private ::boost::remove_cv::type + : protected ::boost::remove_cv::type { public: typedef T1 first_type; @@ -280,8 +280,8 @@ namespace details compressed_pair_imp(first_param_type x) : first_type(x), m_second(x) {} - first_reference first() {return static_cast(*this);} - first_const_reference first() const {return static_cast(*this);} + first_reference first() {return *this;} + first_const_reference first() const {return *this;} second_reference second() {return m_second;} second_const_reference second() const {return m_second;}