From f694e557e150aba52f9cbf101a52bde2393c7949 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 10 Jan 2001 12:21:30 +0000 Subject: [PATCH] compressed pair fixes for VC6 [SVN r8543] --- compressed_pair_test.cpp | 3 +++ include/boost/detail/ob_compressed_pair.hpp | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/compressed_pair_test.cpp b/compressed_pair_test.cpp index 940896b..751ab9e 100644 --- a/compressed_pair_test.cpp +++ b/compressed_pair_test.cpp @@ -78,6 +78,9 @@ int main() compressed_pair cp1d(non_empty2(9)); assert(cp1d.second() == non_empty2(9)); assert(cp1d.first() == non_empty1()); + + compressed_pair cp1e(cp1); + compressed_pair cp2(2); assert(cp2.second() == 2); compressed_pair cp3(1); diff --git a/include/boost/detail/ob_compressed_pair.hpp b/include/boost/detail/ob_compressed_pair.hpp index df8fb64..93cfe3b 100644 --- a/include/boost/detail/ob_compressed_pair.hpp +++ b/include/boost/detail/ob_compressed_pair.hpp @@ -42,6 +42,10 @@ namespace boost // have one template single-argument constructor // in place of two specific constructors: // + +template +class compressed_pair; + namespace detail{ template @@ -104,7 +108,7 @@ public: { init_one::value>::init(val, &_first, &_second); } - compressed_pair_0(const compressed_pair_0& x) + compressed_pair_0(const ::boost::compressed_pair& x) : _first(x._first), _second(x._second) {} first_reference first() { return _first; } @@ -144,7 +148,7 @@ public: { init_one::value>::init(val, &_first, static_cast(this)); } - compressed_pair_1(const compressed_pair_1& x) + compressed_pair_1(const ::boost::compressed_pair& x) : T2(x), _first(x._first) {} first_reference first() { return _first; } @@ -184,7 +188,7 @@ public: { init_one::value>::init(val, static_cast(this), &_second); } - compressed_pair_2(const compressed_pair_2& x) + compressed_pair_2(const ::boost::compressed_pair& x) : T1(x), _second(x._second) {} first_reference first() { return *this; } @@ -222,7 +226,7 @@ public: { init_one::value>::init(val, static_cast(this), static_cast(this)); } - compressed_pair_3(const compressed_pair_3& x) + compressed_pair_3(const ::boost::compressed_pair& x) : T1(x), T2(x) {} first_reference first() { return *this; } @@ -255,7 +259,7 @@ public: compressed_pair_4(first_param_type x, second_param_type) : T1(x) {} // only one single argument constructor since T1 == T2 explicit compressed_pair_4(first_param_type x) : T1(x) {} - compressed_pair_4(const compressed_pair_4& x) + compressed_pair_4(const ::boost::compressed_pair& x) : T1(x){} first_reference first() { return *this; } @@ -290,7 +294,9 @@ public: compressed_pair_5() : _first(), _second() {} compressed_pair_5(first_param_type x, second_param_type y) : _first(x), _second(y) {} // only one single argument constructor since T1 == T2 - explicit compressed_pair_5(first_param_type x) : _first(x), _second() {} + explicit compressed_pair_5(first_param_type x) : _first(x), _second(x) {} + compressed_pair_5(const ::boost::compressed_pair& c) + : _first(c.first()), _second(c.second()) {} first_reference first() { return _first; } first_const_reference first() const { return _first; }