Skip to content

Commit aac3b83

Browse files
burblebeetkoeppe
authored andcommitted
LWG3436 std::construct_at should support arrays
1 parent 1358c8c commit aac3b83

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

source/algorithms.tex

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11741,14 +11741,22 @@
1174111741
\begin{itemdescr}
1174211742
\pnum
1174311743
\constraints
11744-
The expression \tcode{::new (declval<void*>()) T(declval<Args>()...)}
11744+
\tcode{is_unbounded_array_v<T>} is \tcode{false}.
11745+
The expression \tcode{::new (declval<void*>()) T(\linebreak{}declval<Args>()...)}
1174511746
is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}.
1174611747

11748+
\pnum
11749+
\mandates
11750+
If \tcode{is_array_v<T>} is \tcode{true}, \tcode{sizeof...(Args)} is zero.
11751+
1174711752
\pnum
1174811753
\effects
1174911754
Equivalent to:
1175011755
\begin{codeblock}
11751-
return ::new (@\placeholdernc{voidify}@(*location)) T(std::forward<Args>(args)...);
11756+
if constexpr (is_array_v<T>)
11757+
return ::new (@\placeholdernc{voidify}@(*location)) T[1]();
11758+
else
11759+
return ::new (@\placeholdernc{voidify}@(*location)) T(std::forward<Args>(args)...);
1175211760
\end{codeblock}
1175311761
\end{itemdescr}
1175411762

0 commit comments

Comments
 (0)