@@ -12312,14 +12312,14 @@
12312
12312
12313
12313
\pnum
12314
12314
In the \tcode{construct} member functions,
12315
- \tcode{\textit {OUTERMOST}(x)} is \tcode{x} if \tcode{x} does not have an
12315
+ \tcode{\placeholdernc {OUTERMOST}(x)} is \tcode{x} if \tcode{x} does not have an
12316
12316
\tcode{outer_allocator()} member function and
12317
- \tcode{\textit {OUTERMOST}(x.outer_allocator())}
12317
+ \tcode{\placeholdernc {OUTERMOST}(x.outer_allocator())}
12318
12318
otherwise;
12319
- \tcode{\textit {OUTERMOST_ALLOC_TRAITS}(x)} is \\
12320
- \tcode{allocator_traits<decltype(\textit {OUTERMOST}(x))>}.
12321
- \begin{note} \tcode{\textit {OUTERMOST}(x)} and
12322
- \tcode{\textit {OUTERMOST_ALLOC_TRAITS}(x)} are recursive operations. It
12319
+ \tcode{\placeholdernc {OUTERMOST_ALLOC_TRAITS}(x)} is
12320
+ \tcode{allocator_traits<decltype(\placeholdernc {OUTERMOST}(x))>}.
12321
+ \begin{note} \tcode{\placeholdernc {OUTERMOST}(x)} and
12322
+ \tcode{\placeholdernc {OUTERMOST_ALLOC_TRAITS}(x)} are recursive operations. It
12323
12323
is incumbent upon the definition of \tcode{outer_allocator()} to ensure that the
12324
12324
recursion terminates. It will terminate for all instantiations of
12325
12325
\tcode{scoped_allocator_adaptor}. \end{note}
@@ -12406,27 +12406,35 @@
12406
12406
\begin{itemdescr}
12407
12407
\pnum
12408
12408
\effects
12409
-
12410
12409
\begin{itemize}
12411
- \item If \tcode{uses_allocator_v<T, inner_allocator_type>} is \tcode{false} and\\
12412
- \tcode{is_constructible_v<T, Args...>} is \tcode{true}, calls\\
12413
- \tcode{\textit{OUTERMOST_ALLOC_TRAITS}(*this)::construct(\\
12414
- \textit{OUTERMOST}(*this), p, std::forward<Args>(args)...)}.
12410
+ \item If \tcode{uses_allocator_v<T, inner_allocator_type>} is \tcode{false} and
12411
+ \tcode{is_constructible_v<T,\\ Args...>} is \tcode{true}, calls:
12412
+ \begin{codeblock}
12413
+ @\placeholdernc{OUTERMOST_ALLOC_TRAITS}@(*this)::construct(
12414
+ @\placeholdernc{OUTERMOST}@(*this), p, std::forward<Args>(args)...)
12415
+ \end{codeblock}
12415
12416
12416
12417
\item Otherwise, if \tcode{uses_allocator_v<T, inner_allocator_type>} is \tcode{true} and
12417
- \tcode{is_construc\-tible_v<T, allocator_arg_t, inner_allocator_type\&, Args...>} is \tcode{true}, calls
12418
- \tcode{\textit{OUTERMOST_ALLOC_TRAITS}(*this)::construct(\textit{OUTERMOST}(*this),
12419
- p, allocator_arg,\\inner_allocator(), std::forward<Args>(args)...)}.
12418
+ \tcode{is_constructible_v<T, allocator_arg_t, inner_allocator_type\&, Args...>} is \tcode{true}, calls:
12419
+ \begin{codeblock}
12420
+ @\placeholdernc{OUTERMOST_ALLOC_TRAITS}@(*this)::construct(
12421
+ @\placeholdernc{OUTERMOST}@(*this), p, allocator_arg, inner_allocator(), std::forward<Args>(args)...)
12422
+ \end{codeblock}
12420
12423
12421
12424
\item Otherwise, if \tcode{uses_allocator_v<T, inner_allocator_type>} is \tcode{true} and
12422
- \tcode{is_construct\-ible_v<T, Args..., inner_allocator_type\&>} is \tcode{true}, calls
12423
- \tcode{\textit{OUTERMOST_ALLOC_TRAITS}(*this)::
12424
- construct(\textit{OUTERMOST}(*this), p, std::forward<Args>(args)...,\\inner_allocator())}.
12425
+ \tcode{is_constructible_v<T, Args..., inner_allocator_type\&>} is \tcode{true}, calls:
12426
+ \begin{codeblock}
12427
+ @\placeholdernc{OUTERMOST_ALLOC_TRAITS}@(*this)::construct(
12428
+ @\placeholdernc{OUTERMOST}@(*this), p, std::forward<Args>(args)..., inner_allocator())
12429
+ \end{codeblock}
12425
12430
12426
- \item Otherwise, the program is ill-formed. \begin{note} An error will result if
12431
+ \item Otherwise, the program is ill-formed.
12432
+ \begin{note}
12433
+ An error will result if
12427
12434
\tcode{uses_allocator} evaluates to \tcode{true} but the specific constructor does not take an
12428
12435
allocator. This definition prevents a silent failure to pass an inner allocator to a
12429
- contained element. \end{note}
12436
+ contained element.
12437
+ \end{note}
12430
12438
\end{itemize}
12431
12439
\end{itemdescr}
12432
12440
@@ -12445,55 +12453,63 @@
12445
12453
\pnum
12446
12454
\effects Constructs a \tcode{tuple} object \tcode{xprime} from \tcode{x} by the
12447
12455
following rules:
12448
-
12449
12456
\begin{itemize}
12450
- \item If \tcode{uses_allocator_v<T1, inner_allocator_type>} is \tcode{false} and\\
12451
- \tcode{is_constructible_v<T1, Args1...>} is \tcode{true},
12457
+ \item If \tcode{uses_allocator_v<T1, inner_allocator_type>} is \tcode{false} and
12458
+ \tcode{is_constructible_v<T1,\\ Args1...>} is \tcode{true},
12452
12459
then \tcode{xprime} is \tcode{x}.
12453
12460
12454
12461
\item Otherwise, if \tcode{uses_allocator_v<T1, inner_allocator_type>} is \tcode{true}
12455
12462
and
12456
12463
\tcode{is_construct\-ible_v<T1, allocator_arg_t, inner_allocator_type\&, Args1...>}
12457
12464
is
12458
- \tcode{true}, then \tcode{xprime} is
12459
- \tcode{tuple_cat(tuple<allocator_arg_t, inner_allocator_type\&>(
12460
- allocator_arg, inner_allocator()), std::move(x))}.
12465
+ \tcode{true}, then \tcode{xprime} is:
12466
+ \begin{codeblock}
12467
+ tuple_cat(
12468
+ tuple<allocator_arg_t, inner_allocator_type&>(allocator_arg, inner_allocator()),
12469
+ std::move(x))
12470
+ \end{codeblock}
12461
12471
12462
12472
\item Otherwise, if \tcode{uses_allocator_v<T1, inner_allocator_type>} is
12463
12473
\tcode{true} and
12464
12474
\tcode{is_construct\-ible_v<T1, Args1..., inner_allocator_type\&>} is \tcode{true},
12465
- then \tcode{xprime} is
12466
- \tcode{tuple_cat(std::move(x), tuple<inner_allocator_type\&>(inner_allocator()))}.
12475
+ then \tcode{xprime} is:
12476
+ \begin{codeblock}
12477
+ tuple_cat(std::move(x), tuple<inner_allocator_type&>(inner_allocator()))
12478
+ \end{codeblock}
12467
12479
12468
12480
\item Otherwise, the program is ill-formed.
12469
12481
\end{itemize}
12470
-
12471
12482
and constructs a \tcode{tuple} object \tcode{yprime} from \tcode{y} by the following rules:
12472
-
12473
12483
\begin{itemize}
12474
- \item If \tcode{uses_allocator_v<T2, inner_allocator_type>} is \tcode{false} and\\
12475
- \tcode{is_constructible_v<T2,
12476
- Args2...>} is \tcode{true}, then \tcode{yprime} is \tcode{y}.
12484
+ \item If \tcode{uses_allocator_v<T2, inner_allocator_type>} is \tcode{false} and
12485
+ \tcode{is_constructible_v<T2,\\ Args2...>} is \tcode{true}, then \tcode{yprime} is \tcode{y}.
12477
12486
12478
12487
\item Otherwise, if \tcode{uses_allocator_v<T2, inner_allocator_type>} is \tcode{true}
12479
12488
and
12480
- \tcode{is_construct\-ible_v <T2, allocator_arg_t, inner_allocator_type\&, Args2...>}
12489
+ \tcode{is_constructible_v <T2, allocator_arg_t, inner_allocator_type\&, Args2...>}
12481
12490
is
12482
- \tcode{true}, then \tcode{yprime} is
12483
- \tcode{tuple_cat(tuple<allocator_arg_t, inner_allocator_type\&>(
12484
- allocator_arg, inner_allocator()), std::move(y))}.
12491
+ \tcode{true}, then \tcode{yprime} is:
12492
+ \begin{codeblock}
12493
+ tuple_cat(
12494
+ tuple<allocator_arg_t, inner_allocator_type&>(allocator_arg, inner_allocator()),
12495
+ std::move(y))
12496
+ \end{codeblock}
12485
12497
12486
12498
\item Otherwise, if \tcode{uses_allocator_v<T2, inner_allocator_type>} is
12487
12499
\tcode{true} and
12488
- \tcode{is_construct\-ible_v<T2, Args2..., inner_allocator_type\&>} is \tcode{true},
12489
- then \tcode{yprime} is
12490
- \tcode{tuple_cat(std::move(y), tuple<inner_allocator_type\&>(inner_allocator()))}.
12500
+ \tcode{is_constructible_v<T2, Args2..., inner_allocator_type\&>} is \tcode{true},
12501
+ then \tcode{yprime} is:
12502
+ \begin{codeblock}
12503
+ tuple_cat(std::move(y), tuple<inner_allocator_type&>(inner_allocator()))
12504
+ \end{codeblock}
12491
12505
12492
12506
\item Otherwise, the program is ill-formed.
12493
12507
\end{itemize}
12494
-
12495
- then calls \tcode{\textit{OUTERMOST_ALLOC_TRAITS}(*this)::construct(\textit{OUTERMOST}(*this), p,\\
12496
- piecewise_construct, std::move(xprime), std::move(yprime))}.
12508
+ then calls:
12509
+ \begin{codeblock}
12510
+ @\placeholdernc{OUTERMOST_ALLOC_TRAITS}@(*this)::construct(
12511
+ @\placeholdernc{OUTERMOST}@(*this), p, piecewise_construct, std::move(xprime), std::move(yprime))
12512
+ \end{codeblock}
12497
12513
\end{itemdescr}
12498
12514
12499
12515
\indexlibrarymember{construct}{scoped_allocator_adaptor}%
12566
12582
12567
12583
\begin{itemdescr}
12568
12584
\pnum
12569
- \effects Calls \tcode{\textit {OUTERMOST_ALLOC_TRAITS}(*this)::destroy(\textit {OUTERMOST}(*this), p)}.
12585
+ \effects Calls \tcode{\placeholdernc {OUTERMOST_ALLOC_TRAITS}(*this)::destroy(\placeholdernc {OUTERMOST}(*this), p)}.
12570
12586
\end{itemdescr}
12571
12587
12572
12588
\indexlibrarymember{select_on_container_copy_construction}{scoped_allocator_adaptor}%
0 commit comments