|
16995 | 16995 | \tcode{struct}
|
16996 | 16996 | \hspace*{2ex}\tcode{basic_common_reference;}
|
16997 | 16997 | &
|
16998 |
| - A program may specialize this trait (as specified in Note D, below). If there |
16999 |
| - is a member \tcode{type}, it shall be a \grammarterm{typedef-name}. |
17000 |
| - \begin{note} |
17001 |
| - Such specializations can be used to influence the result of |
17002 |
| - \tcode{common_reference}. |
17003 |
| - \end{note} \\ \rowsep |
| 16998 | + Unless this trait is specialized (as specified in Note D, below), |
| 16999 | + there shall be no member \tcode{type}. \\ \rowsep |
17004 | 17000 |
|
17005 | 17001 | \indexlibrary{\idxcode{common_reference}}%
|
17006 | 17002 | \tcode{template<class... T>} \tcode{struct common_reference;}
|
|
17076 | 17072 | \tcode{const volatile short}.
|
17077 | 17073 | \end{example}
|
17078 | 17074 | \item \tcode{\placeholdernc{COND_RES}(X, Y)} be
|
17079 |
| - \tcode{decltype(false ? declval<X(\&)()>()() : declval<Y(\&)()>()())}. |
| 17075 | + \tcode{decltype(false ?\ declval<X(\&)()>()() :\ declval<Y(\&)()>()())}. |
17080 | 17076 | \end{itemize}
|
17081 | 17077 | Given types \tcode{A} and \tcode{B},
|
17082 | 17078 | let \tcode{X} be \tcode{remove_reference_t<A>},
|
|
17233 | 17229 | \tcode{is_same_v<T, decay_t<T>{>}} and
|
17234 | 17230 | \tcode{is_same_v<U, decay_t<U>{>}} are each \tcode{true}.
|
17235 | 17231 | \begin{note}
|
17236 |
| -Such specializations are needed when only explicit conversions are desired |
| 17232 | +Such specializations |
| 17233 | +can be used to influence the result of \tcode{common_reference}, and |
| 17234 | +are needed when only explicit conversions are desired |
17237 | 17235 | between the template arguments.
|
17238 | 17236 | \end{note}
|
17239 | 17237 | Such a specialization need not have a member named \tcode{type}, but if it does,
|
|
0 commit comments