From Jason Turner

[allocator.adaptor]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmprq7_dn0b/{from.md → to.md} +11 -11
tmp/tmprq7_dn0b/{from.md → to.md} RENAMED
@@ -90,11 +90,11 @@ namespace std {
90
  pointer allocate(size_type n, const_void_pointer hint);
91
  void deallocate(pointer p, size_type n);
92
  size_type max_size() const;
93
 
94
  template <class T, class... Args>
95
- void construct(T* p, Args&& args);
96
  template <class T1, class T2, class... Args1, class... Args2>
97
  void construct(pair<T1, T2>* p, piecewise_construct_t,
98
  tuple<Args1...> x, tuple<Args2...> y);
99
  template <class T1, class T2>
100
  void construct(pair<T1, T2>* p);
@@ -161,11 +161,11 @@ any `A` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise,
161
 
162
  ``` cpp
163
  scoped_allocator_adaptor();
164
  ```
165
 
166
- *Effects:* value-initializes the OuterAlloc base class and the `inner`
167
  allocator object.
168
 
169
  ``` cpp
170
  template <class OuterA2>
171
  scoped_allocator_adaptor(OuterA2&& outerAlloc,
@@ -318,16 +318,16 @@ following rules:
318
  `x`.
319
  - Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
320
  `true` and
321
  `is_constructible<T1, allocator_arg_t, inner_allocator_type, Args1...>::value`
322
  is `true`, then `xprime` is
323
- `tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator_type()), x)`.
324
  - Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
325
  `true` and
326
  `is_constructible<T1, Args1..., inner_allocator_type>::value` is
327
  `true`, then `xprime` is
328
- `tuple_cat(x, tuple<inner_allocator_type&>(inner_allocator_type()))`.
329
  - Otherwise, the program is ill-formed.
330
 
331
  and constructs a `tuple` object `yprime` from `y` by the following
332
  rules:
333
 
@@ -336,52 +336,52 @@ rules:
336
  `y`.
337
  - Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
338
  `true` and
339
  `is_constructible<T2, allocator_arg_t, inner_allocator_type, Args2...>::value`
340
  is `true`, then `yprime` is
341
- `tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator_type()), y)`.
342
  - Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
343
  `true` and
344
  `is_constructible<T2, Args2..., inner_allocator_type>::value` is
345
  `true`, then `yprime` is
346
- `tuple_cat(y, tuple<inner_allocator_type&>(inner_allocator_type()))`.
347
  - Otherwise, the program is ill-formed.
348
 
349
  then calls
350
  *`OUTERMOST_ALLOC_TRAITS`*`(*this)::construct(`*`OUTERMOST`*`(*this), p,`
351
- `piecewise_construct, xprime, yprime)`.
352
 
353
  ``` cpp
354
  template <class T1, class T2>
355
  void construct(pair<T1, T2>* p);
356
  ```
357
 
358
- *Effects:* equivalent to
359
  `this->construct(p, piecewise_construct, tuple<>(), tuple<>())`.
360
 
361
  ``` cpp
362
  template <class T1, class T2, class U, class V>
363
  void construct(pair<T1, T2>* p, U&& x, V&& y);
364
  ```
365
 
366
- *Effects:* equivalent to
367
  `this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x)), forward_as_tuple(std::forward<V>(y)))`.
368
 
369
  ``` cpp
370
  template <class T1, class T2, class U, class V>
371
  void construct(pair<T1, T2>* p, const pair<U, V>& x);
372
  ```
373
 
374
- *Effects:* equivalent to
375
  `this->construct(p, piecewise_construct, forward_as_tuple(x.first), forward_as_tuple(x.second))`.
376
 
377
  ``` cpp
378
  template <class T1, class T2, class U, class V>
379
  void construct(pair<T1, T2>* p, pair<U, V>&& x);
380
  ```
381
 
382
- *Effects:* equivalent to
383
  `this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x.first)), forward_as_tuple(std::forward<V>(x.second)))`.
384
 
385
  ``` cpp
386
  template <class T>
387
  void destroy(T* p);
 
90
  pointer allocate(size_type n, const_void_pointer hint);
91
  void deallocate(pointer p, size_type n);
92
  size_type max_size() const;
93
 
94
  template <class T, class... Args>
95
+ void construct(T* p, Args&&... args);
96
  template <class T1, class T2, class... Args1, class... Args2>
97
  void construct(pair<T1, T2>* p, piecewise_construct_t,
98
  tuple<Args1...> x, tuple<Args2...> y);
99
  template <class T1, class T2>
100
  void construct(pair<T1, T2>* p);
 
161
 
162
  ``` cpp
163
  scoped_allocator_adaptor();
164
  ```
165
 
166
+ *Effects:* value-initializes the `OuterAlloc` base class and the `inner`
167
  allocator object.
168
 
169
  ``` cpp
170
  template <class OuterA2>
171
  scoped_allocator_adaptor(OuterA2&& outerAlloc,
 
318
  `x`.
319
  - Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
320
  `true` and
321
  `is_constructible<T1, allocator_arg_t, inner_allocator_type, Args1...>::value`
322
  is `true`, then `xprime` is
323
+ `tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator()), std::move(x))`.
324
  - Otherwise, if `uses_allocator<T1, inner_allocator_type>::value` is
325
  `true` and
326
  `is_constructible<T1, Args1..., inner_allocator_type>::value` is
327
  `true`, then `xprime` is
328
+ `tuple_cat(std::move(x), tuple<inner_allocator_type&>(inner_allocator()))`.
329
  - Otherwise, the program is ill-formed.
330
 
331
  and constructs a `tuple` object `yprime` from `y` by the following
332
  rules:
333
 
 
336
  `y`.
337
  - Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
338
  `true` and
339
  `is_constructible<T2, allocator_arg_t, inner_allocator_type, Args2...>::value`
340
  is `true`, then `yprime` is
341
+ `tuple_cat(tuple<allocator_arg_t, inner_allocator_type&>( allocator_arg, inner_allocator()), std::move(y))`.
342
  - Otherwise, if `uses_allocator<T2, inner_allocator_type>::value` is
343
  `true` and
344
  `is_constructible<T2, Args2..., inner_allocator_type>::value` is
345
  `true`, then `yprime` is
346
+ `tuple_cat(std::move(y), tuple<inner_allocator_type&>(inner_allocator()))`.
347
  - Otherwise, the program is ill-formed.
348
 
349
  then calls
350
  *`OUTERMOST_ALLOC_TRAITS`*`(*this)::construct(`*`OUTERMOST`*`(*this), p,`
351
+ `piecewise_construct, std::move(xprime), std::move(yprime))`.
352
 
353
  ``` cpp
354
  template <class T1, class T2>
355
  void construct(pair<T1, T2>* p);
356
  ```
357
 
358
+ *Effects:* Equivalent to
359
  `this->construct(p, piecewise_construct, tuple<>(), tuple<>())`.
360
 
361
  ``` cpp
362
  template <class T1, class T2, class U, class V>
363
  void construct(pair<T1, T2>* p, U&& x, V&& y);
364
  ```
365
 
366
+ *Effects:* Equivalent to
367
  `this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x)), forward_as_tuple(std::forward<V>(y)))`.
368
 
369
  ``` cpp
370
  template <class T1, class T2, class U, class V>
371
  void construct(pair<T1, T2>* p, const pair<U, V>& x);
372
  ```
373
 
374
+ *Effects:* Equivalent to
375
  `this->construct(p, piecewise_construct, forward_as_tuple(x.first), forward_as_tuple(x.second))`.
376
 
377
  ``` cpp
378
  template <class T1, class T2, class U, class V>
379
  void construct(pair<T1, T2>* p, pair<U, V>&& x);
380
  ```
381
 
382
+ *Effects:* Equivalent to
383
  `this->construct(p, piecewise_construct, forward_as_tuple(std::forward<U>(x.first)), forward_as_tuple(std::forward<V>(x.second)))`.
384
 
385
  ``` cpp
386
  template <class T>
387
  void destroy(T* p);