From c0f0a4f51d174b1bd531026078bf3c9e4f0921d4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 3 Feb 2006 11:00:23 +0000 Subject: [PATCH] Try again with DMC patch: last attempt broke Borland C++ Builder, so use implicit casts with protected rather than private bases. [SVN r32524] --- include/boost/detail/compressed_pair.hpp | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) 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;}