From Jason Turner

[allocator.adaptor.members]

Diff to HTML by rtfpessoa

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, inner_allocator_type()), 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(x, tuple<inner_allocator_type&>(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, inner_allocator_type()), 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(y, tuple<inner_allocator_type&>(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:* 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);
 
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);