|
878 | 878 | !is_convertible_v<decltype(get<1>(@\exposid{FWD}@(p))), T2>
|
879 | 879 | \end{codeblock}
|
880 | 880 | The constructor is defined as deleted if
|
881 |
| -\tcode{reference_constructs_from_temporary_v<first_type, decltype(get<0>(FWD(p)))>} |
882 |
| -is \tcode{true} or |
883 |
| -\tcode{reference_constructs_from_temporary_v<second_type, decltype(get<1>(FWD(p)))>} |
| 881 | +\begin{codeblock} |
| 882 | +reference_constructs_from_temporary_v<first_type, decltype(get<0>(@\exposid{FWD}@(p)))> || |
| 883 | +reference_constructs_from_temporary_v<second_type, decltype(get<1>(@\exposid{FWD}@(p)))> |
| 884 | +\end{codeblock} |
884 | 885 | is \tcode{true}.
|
885 | 886 | \end{itemdescr}
|
886 | 887 |
|
|
14305 | 14306 | \tcode{\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$)} implicitly converted
|
14306 | 14307 | to \tcode{R}.
|
14307 | 14308 | If
|
14308 |
| -\tcode{reference_converts_from_temporary_v<R, decltype(\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$)} |
14309 |
| -is true, |
| 14309 | +\tcode{reference_converts_from_temporary_v<R, decltype(\placeholdernc{INVOKE}(f, t$_1$, t$_2$, $\dotsc$, t$_N$))>} |
| 14310 | +is \tcode{true}, |
14310 | 14311 | \tcode{\placeholdernc{INVOKE}<R>(f, t$_1$, t$_2$, $\dotsc$, t$_N$)}
|
14311 | 14312 | is ill-formed.
|
14312 | 14313 |
|
@@ -17753,11 +17754,11 @@
|
17753 | 17754 | inline constexpr bool has_unique_object_representations_v
|
17754 | 17755 | = has_unique_object_representations<T>::value;
|
17755 | 17756 | template<class T, class U>
|
17756 |
| - inline constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ = |
17757 |
| - reference_constructs_from_temporary<T, U>::value; |
| 17757 | + inline constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ |
| 17758 | + = reference_constructs_from_temporary<T, U>::value; |
17758 | 17759 | template<class T, class U>
|
17759 |
| - inline constexpr bool @\libglobal{reference_converts_from_temporary_v}@ = |
17760 |
| - reference_converts_from_temporary<T, U>::value; |
| 17760 | + inline constexpr bool @\libglobal{reference_converts_from_temporary_v}@ |
| 17761 | + = reference_converts_from_temporary<T, U>::value; |
17761 | 17762 |
|
17762 | 17763 | // \ref{meta.unary.prop.query}, type property queries
|
17763 | 17764 | template<class T>
|
|
18442 | 18443 | \tcode{T} shall be a complete type, \cv{}~\keyword{void}, or
|
18443 | 18444 | an array of unknown bound. \\ \rowsep
|
18444 | 18445 |
|
| 18446 | +\indexlibraryglobal{reference_constructs_from_temporary}% |
| 18447 | +\tcode{template<class T>}\br |
| 18448 | + \tcode{struct reference_constructs_from_temporary;} & |
| 18449 | + \tcode{conjunction_v<is_reference<T>, is_constructible<T, U>>} |
| 18450 | + is \tcode{true}, and |
| 18451 | + the initialization \tcode{T t(\exposid{VAL}<U>);} binds \tcode{t} to |
| 18452 | + a temporary object whose lifetime is extended\iref{class.temporary}. & |
| 18453 | + \tcode{T} and \tcode{U} shall be |
| 18454 | + complete types, \cv{}~\keyword{void}, or arrays of unknown bound. \\ \rowsep |
| 18455 | + |
| 18456 | +\indexlibraryglobal{reference_converts_from_temporary}% |
| 18457 | +\tcode{template<class T>}\br |
| 18458 | + \tcode{struct reference_converts_from_temporary;} & |
| 18459 | + \tcode{conjunction_v<is_reference<T>, is_convertible<U, T>>} is \tcode{true}, |
| 18460 | + and the initialization \tcode{T t = \exposid{VAL}<U>;} binds \tcode{t} to |
| 18461 | + a temporary object whose lifetime is extended\iref{class.temporary}. & |
| 18462 | + \tcode{T} and \tcode{U} shall be |
| 18463 | + complete types, \cv{}~\keyword{void}, or arrays of unknown bound. \\ \rowsep |
| 18464 | + |
18445 | 18465 | \end{libreqtab3b}
|
18446 | 18466 |
|
18447 | 18467 | \pnum
|
|
0 commit comments