diff --git a/include/boost/detail/compressed_pair.hpp b/include/boost/detail/compressed_pair.hpp index 3b9fc8f..0a74d8a 100644 --- a/include/boost/detail/compressed_pair.hpp +++ b/include/boost/detail/compressed_pair.hpp @@ -32,6 +32,10 @@ namespace boost { +template +class compressed_pair; + + // compressed_pair namespace details @@ -116,10 +120,10 @@ namespace details second_reference second() {return second_;} second_const_reference second() const {return second_;} - void swap(compressed_pair_imp& y) + void swap(::boost::compressed_pair& y) { - cp_swap(first_, y.first_); - cp_swap(second_, y.second_); + cp_swap(first_, y.first()); + cp_swap(second_, y.second()); } private: first_type first_; @@ -147,10 +151,10 @@ namespace details compressed_pair_imp(first_param_type x, second_param_type y) : first_type(x), second_(y) {} - explicit compressed_pair_imp(first_param_type x) + compressed_pair_imp(first_param_type x) : first_type(x) {} - explicit compressed_pair_imp(second_param_type y) + compressed_pair_imp(second_param_type y) : second_(y) {} first_reference first() {return *this;} @@ -159,10 +163,10 @@ namespace details second_reference second() {return second_;} second_const_reference second() const {return second_;} - void swap(compressed_pair_imp& y) + void swap(::boost::compressed_pair& y) { // no need to swap empty base class: - cp_swap(second_, y.second_); + cp_swap(second_, y.second()); } private: second_type second_; @@ -189,10 +193,10 @@ namespace details compressed_pair_imp(first_param_type x, second_param_type y) : second_type(y), first_(x) {} - explicit compressed_pair_imp(first_param_type x) + compressed_pair_imp(first_param_type x) : first_(x) {} - explicit compressed_pair_imp(second_param_type y) + compressed_pair_imp(second_param_type y) : second_type(y) {} first_reference first() {return first_;} @@ -201,10 +205,10 @@ namespace details second_reference second() {return *this;} second_const_reference second() const {return *this;} - void swap(compressed_pair_imp& y) + void swap(::boost::compressed_pair& y) { // no need to swap empty base class: - cp_swap(first_, y.first_); + cp_swap(first_, y.first()); } private: @@ -233,10 +237,10 @@ namespace details compressed_pair_imp(first_param_type x, second_param_type y) : first_type(x), second_type(y) {} - explicit compressed_pair_imp(first_param_type x) + compressed_pair_imp(first_param_type x) : first_type(x) {} - explicit compressed_pair_imp(second_param_type y) + compressed_pair_imp(second_param_type y) : second_type(y) {} first_reference first() {return *this;} @@ -246,7 +250,7 @@ namespace details second_const_reference second() const {return *this;} // // no need to swap empty bases: - void swap(compressed_pair_imp&) {} + void swap(::boost::compressed_pair&) {} }; // JM @@ -272,7 +276,7 @@ namespace details compressed_pair_imp(first_param_type x, second_param_type) : first_type(x) {} - explicit compressed_pair_imp(first_param_type x) + compressed_pair_imp(first_param_type x) : first_type(x) {} first_reference first() {return *this;} @@ -281,7 +285,7 @@ namespace details second_reference second() {return *this;} second_const_reference second() const {return *this;} - void swap(compressed_pair_imp&) {} + void swap(::boost::compressed_pair&) {} private: }; @@ -305,7 +309,7 @@ namespace details compressed_pair_imp(first_param_type x, second_param_type y) : first_(x), second_(y) {} - explicit compressed_pair_imp(first_param_type x) + compressed_pair_imp(first_param_type x) : first_(x), second_(x) {} first_reference first() {return first_;} @@ -314,10 +318,10 @@ namespace details second_reference second() {return second_;} second_const_reference second() const {return second_;} - void swap(compressed_pair_imp& y) + void swap(::boost::compressed_pair& y) { - cp_swap(first_, y.first_); - cp_swap(second_, y.second_); + cp_swap(first_, y.first()); + cp_swap(second_, y.second()); } private: first_type first_; @@ -365,7 +369,7 @@ public: second_reference second() {return base::second();} second_const_reference second() const {return base::second();} - void swap(compressed_pair& y) { base::swap(static_cast(y)); } + void swap(compressed_pair& y) { base::swap(y); } }; // JM @@ -401,7 +405,10 @@ public: compressed_pair() : base() {} compressed_pair(first_param_type x, second_param_type y) : base(x, y) {} - explicit compressed_pair(first_param_type x) : base(x) {} +#if !(defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) + explicit +#endif + compressed_pair(first_param_type x) : base(x) {} first_reference first() {return base::first();} first_const_reference first() const {return base::first();} @@ -409,7 +416,7 @@ public: second_reference second() {return base::second();} second_const_reference second() const {return base::second();} - void swap(compressed_pair& y) { base::swap(y); } + void swap(::boost::compressed_pair& y) { base::swap(y); } }; template