|
| 1 | +#include <libcxx-simulators-common/compressed_pair.h> |
| 2 | + |
1 | 3 | #include <climits>
|
2 | 4 | #include <memory>
|
3 | 5 | #include <type_traits>
|
|
32 | 34 | namespace std {
|
33 | 35 | namespace __lldb {
|
34 | 36 |
|
35 |
| -template <class _Tp, int _Idx, |
36 |
| - bool _CanBeEmptyBase = |
37 |
| - std::is_empty<_Tp>::value && !std::is_final<_Tp>::value> |
38 |
| -struct __compressed_pair_elem { |
39 |
| - explicit __compressed_pair_elem(_Tp __t) : __value_(__t) {} |
40 |
| - |
41 |
| - _Tp &__get() { return __value_; } |
42 |
| - |
43 |
| -private: |
44 |
| - _Tp __value_; |
45 |
| -}; |
46 |
| - |
47 |
| -template <class _Tp, int _Idx> |
48 |
| -struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { |
49 |
| - explicit __compressed_pair_elem(_Tp __t) : _Tp(__t) {} |
50 |
| - |
51 |
| - _Tp &__get() { return *this; } |
52 |
| -}; |
53 |
| - |
54 |
| -template <class _T1, class _T2> |
55 |
| -class __compressed_pair : private __compressed_pair_elem<_T1, 0>, |
56 |
| - private __compressed_pair_elem<_T2, 1> { |
57 |
| -public: |
58 |
| - using _Base1 = __compressed_pair_elem<_T1, 0>; |
59 |
| - using _Base2 = __compressed_pair_elem<_T2, 1>; |
60 |
| - |
61 |
| - explicit __compressed_pair(_T1 __t1, _T2 __t2) : _Base1(__t1), _Base2(__t2) {} |
62 |
| - |
63 |
| - _T1 &first() { return static_cast<_Base1 &>(*this).__get(); } |
64 |
| -}; |
65 |
| - |
66 | 37 | #if defined(ALTERNATE_LAYOUT) && defined(SUBCLASS_PADDING)
|
67 | 38 | template <class _CharT, size_t = sizeof(_CharT)> struct __padding {
|
68 | 39 | unsigned char __xx[sizeof(_CharT) - 1];
|
@@ -212,7 +183,7 @@ template <class _CharT, class _Traits, class _Allocator> class basic_string {
|
212 | 183 | };
|
213 | 184 | };
|
214 | 185 |
|
215 |
| - __compressed_pair<__rep, allocator_type> __r_; |
| 186 | + std::__lldb::__compressed_pair<__rep, allocator_type> __r_; |
216 | 187 |
|
217 | 188 | public:
|
218 | 189 | template <size_t __N>
|
|
0 commit comments