@@ -12762,17 +12762,13 @@
12762
12762
\end{itemdecl}
12763
12763
12764
12764
\begin{itemdescr}
12765
- \pnum
12766
- \requires All of the types in \tcode{Args1} and \tcode{Args2} shall be
12767
- \tcode{CopyConstructible} (\tref{copyconstructible}).
12768
-
12769
12765
\pnum
12770
12766
\effects Constructs a \tcode{tuple} object \tcode{xprime} from \tcode{x} by the
12771
12767
following rules:
12772
12768
\begin{itemize}
12773
12769
\item If \tcode{uses_allocator_v<T1, inner_allocator_type>} is \tcode{false} and
12774
12770
\tcode{is_constructible_v<T1,\\ Args1...>} is \tcode{true},
12775
- then \tcode{xprime} is \tcode{x }.
12771
+ then \tcode{xprime} is \tcode{tuple<Args1\&\&...>(std::move(x)) }.
12776
12772
12777
12773
\item Otherwise, if \tcode{uses_allocator_v<T1, inner_allocator_type>} is \tcode{true}
12778
12774
and
@@ -12782,23 +12778,24 @@
12782
12778
\begin{codeblock}
12783
12779
tuple_cat(
12784
12780
tuple<allocator_arg_t, inner_allocator_type&>(allocator_arg, inner_allocator()),
12785
- std::move(x))
12781
+ tuple<Args1&&...>( std::move(x) ))
12786
12782
\end{codeblock}
12787
12783
12788
12784
\item Otherwise, if \tcode{uses_allocator_v<T1, inner_allocator_type>} is
12789
12785
\tcode{true} and
12790
12786
\tcode{is_construct\-ible_v<T1, Args1..., inner_allocator_type\&>} is \tcode{true},
12791
12787
then \tcode{xprime} is:
12792
12788
\begin{codeblock}
12793
- tuple_cat(std::move(x), tuple<inner_allocator_type&>(inner_allocator()))
12789
+ tuple_cat(tuple<Args1&&...>(std::move(x)),
12790
+ tuple<inner_allocator_type&>(inner_allocator()))
12794
12791
\end{codeblock}
12795
12792
12796
12793
\item Otherwise, the program is ill-formed.
12797
12794
\end{itemize}
12798
12795
and constructs a \tcode{tuple} object \tcode{yprime} from \tcode{y} by the following rules:
12799
12796
\begin{itemize}
12800
12797
\item If \tcode{uses_allocator_v<T2, inner_allocator_type>} is \tcode{false} and
12801
- \tcode{is_constructible_v<T2,\\ Args2...>} is \tcode{true}, then \tcode{yprime} is \tcode{y }.
12798
+ \tcode{is_constructible_v<T2,\\ Args2...>} is \tcode{true}, then \tcode{yprime} is \tcode{tuple<Args2\&\&...>(std::move(y) }.
12802
12799
12803
12800
\item Otherwise, if \tcode{uses_allocator_v<T2, inner_allocator_type>} is \tcode{true}
12804
12801
and
@@ -12808,15 +12805,16 @@
12808
12805
\begin{codeblock}
12809
12806
tuple_cat(
12810
12807
tuple<allocator_arg_t, inner_allocator_type&>(allocator_arg, inner_allocator()),
12811
- std::move(y))
12808
+ tuple<Args2&&...>( std::move(y) ))
12812
12809
\end{codeblock}
12813
12810
12814
12811
\item Otherwise, if \tcode{uses_allocator_v<T2, inner_allocator_type>} is
12815
12812
\tcode{true} and
12816
12813
\tcode{is_constructible_v<T2, Args2..., inner_allocator_type\&>} is \tcode{true},
12817
12814
then \tcode{yprime} is:
12818
12815
\begin{codeblock}
12819
- tuple_cat(std::move(y), tuple<inner_allocator_type&>(inner_allocator()))
12816
+ tuple_cat(tuple<Args2&&...>(std::move(y)),
12817
+ tuple<inner_allocator_type&>(inner_allocator()))
12820
12818
\end{codeblock}
12821
12819
12822
12820
\item Otherwise, the program is ill-formed.
0 commit comments