tmp/tmpx_jbvlu8/{from.md → to.md}
RENAMED
|
@@ -101,16 +101,16 @@ following rules:
|
|
| 101 |
`x`.
|
| 102 |
- Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
|
| 103 |
`true` and
|
| 104 |
`is_constructible<T1, allocator_arg_t, inner_allocator_type, Args1...>::value`
|
| 105 |
is `true`, then `xprime` is
|
| 106 |
-
`tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg,
|
| 107 |
- Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
|
| 108 |
`true` and
|
| 109 |
`is_constructible<T1, Args1..., inner_allocator_type>::value` is
|
| 110 |
`true`, then `xprime` is
|
| 111 |
-
`tuple_cat(x, tuple<inner_allocator_type&>(
|
| 112 |
- Otherwise, the program is ill-formed.
|
| 113 |
|
| 114 |
and constructs a `tuple` object `yprime` from `y` by the following
|
| 115 |
rules:
|
| 116 |
|
|
@@ -119,52 +119,52 @@ rules:
|
|
| 119 |
`y`.
|
| 120 |
- Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
|
| 121 |
`true` and
|
| 122 |
`is_constructible<T2, allocator_arg_t, inner_allocator_type, Args2...>::value`
|
| 123 |
is `true`, then `yprime` is
|
| 124 |
-
`tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg,
|
| 125 |
- Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
|
| 126 |
`true` and
|
| 127 |
`is_constructible<T2, Args2..., inner_allocator_type>::value` is
|
| 128 |
`true`, then `yprime` is
|
| 129 |
-
`tuple_cat(y, tuple<inner_allocator_type&>(
|
| 130 |
- Otherwise, the program is ill-formed.
|
| 131 |
|
| 132 |
then calls
|
| 133 |
*`OUTERMOST_ALLOC_TRAITS`*`(*this)::construct(`*`OUTERMOST`*`(*this), p,`
|
| 134 |
-
`piecewise_construct, xprime, yprime)`.
|
| 135 |
|
| 136 |
``` cpp
|
| 137 |
template <class T1, class T2>
|
| 138 |
void construct(pair<T1, T2>* p);
|
| 139 |
```
|
| 140 |
|
| 141 |
-
*Effects:*
|
| 142 |
`this->construct(p, piecewise_construct, tuple<>(), tuple<>())`.
|
| 143 |
|
| 144 |
``` cpp
|
| 145 |
template <class T1, class T2, class U, class V>
|
| 146 |
void construct(pair<T1, T2>* p, U&& x, V&& y);
|
| 147 |
```
|
| 148 |
|
| 149 |
-
*Effects:*
|
| 150 |
`this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x)), forward_as_tuple(std::forward<V>(y)))`.
|
| 151 |
|
| 152 |
``` cpp
|
| 153 |
template <class T1, class T2, class U, class V>
|
| 154 |
void construct(pair<T1, T2>* p, const pair<U, V>& x);
|
| 155 |
```
|
| 156 |
|
| 157 |
-
*Effects:*
|
| 158 |
`this->construct(p, piecewise_construct, forward_as_tuple(x.first), forward_as_tuple(x.second))`.
|
| 159 |
|
| 160 |
``` cpp
|
| 161 |
template <class T1, class T2, class U, class V>
|
| 162 |
void construct(pair<T1, T2>* p, pair<U, V>&& x);
|
| 163 |
```
|
| 164 |
|
| 165 |
-
*Effects:*
|
| 166 |
`this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x.first)), forward_as_tuple(std::forward<V>(x.second)))`.
|
| 167 |
|
| 168 |
``` cpp
|
| 169 |
template <class T>
|
| 170 |
void destroy(T* p);
|
|
|
|
| 101 |
`x`.
|
| 102 |
- Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
|
| 103 |
`true` and
|
| 104 |
`is_constructible<T1, allocator_arg_t, inner_allocator_type, Args1...>::value`
|
| 105 |
is `true`, then `xprime` is
|
| 106 |
+
`tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator()), std::move(x))`.
|
| 107 |
- Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
|
| 108 |
`true` and
|
| 109 |
`is_constructible<T1, Args1..., inner_allocator_type>::value` is
|
| 110 |
`true`, then `xprime` is
|
| 111 |
+
`tuple_cat(std::move(x), tuple<inner_allocator_type&>(inner_allocator()))`.
|
| 112 |
- Otherwise, the program is ill-formed.
|
| 113 |
|
| 114 |
and constructs a `tuple` object `yprime` from `y` by the following
|
| 115 |
rules:
|
| 116 |
|
|
|
|
| 119 |
`y`.
|
| 120 |
- Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
|
| 121 |
`true` and
|
| 122 |
`is_constructible<T2, allocator_arg_t, inner_allocator_type, Args2...>::value`
|
| 123 |
is `true`, then `yprime` is
|
| 124 |
+
`tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator()), std::move(y))`.
|
| 125 |
- Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
|
| 126 |
`true` and
|
| 127 |
`is_constructible<T2, Args2..., inner_allocator_type>::value` is
|
| 128 |
`true`, then `yprime` is
|
| 129 |
+
`tuple_cat(std::move(y), tuple<inner_allocator_type&>(inner_allocator()))`.
|
| 130 |
- Otherwise, the program is ill-formed.
|
| 131 |
|
| 132 |
then calls
|
| 133 |
*`OUTERMOST_ALLOC_TRAITS`*`(*this)::construct(`*`OUTERMOST`*`(*this), p,`
|
| 134 |
+
`piecewise_construct, std::move(xprime), std::move(yprime))`.
|
| 135 |
|
| 136 |
``` cpp
|
| 137 |
template <class T1, class T2>
|
| 138 |
void construct(pair<T1, T2>* p);
|
| 139 |
```
|
| 140 |
|
| 141 |
+
*Effects:* Equivalent to
|
| 142 |
`this->construct(p, piecewise_construct, tuple<>(), tuple<>())`.
|
| 143 |
|
| 144 |
``` cpp
|
| 145 |
template <class T1, class T2, class U, class V>
|
| 146 |
void construct(pair<T1, T2>* p, U&& x, V&& y);
|
| 147 |
```
|
| 148 |
|
| 149 |
+
*Effects:* Equivalent to
|
| 150 |
`this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x)), forward_as_tuple(std::forward<V>(y)))`.
|
| 151 |
|
| 152 |
``` cpp
|
| 153 |
template <class T1, class T2, class U, class V>
|
| 154 |
void construct(pair<T1, T2>* p, const pair<U, V>& x);
|
| 155 |
```
|
| 156 |
|
| 157 |
+
*Effects:* Equivalent to
|
| 158 |
`this->construct(p, piecewise_construct, forward_as_tuple(x.first), forward_as_tuple(x.second))`.
|
| 159 |
|
| 160 |
``` cpp
|
| 161 |
template <class T1, class T2, class U, class V>
|
| 162 |
void construct(pair<T1, T2>* p, pair<U, V>&& x);
|
| 163 |
```
|
| 164 |
|
| 165 |
+
*Effects:* Equivalent to
|
| 166 |
`this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x.first)), forward_as_tuple(std::forward<V>(x.second)))`.
|
| 167 |
|
| 168 |
``` cpp
|
| 169 |
template <class T>
|
| 170 |
void destroy(T* p);
|