From 9043e82f0efaffc817858a8853250f9decff5b0b Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Fri, 10 Apr 2020 04:10:51 -0400 Subject: [PATCH] [class.temporary, expr, dcl.ref] Fix incorrect cross-references for decltype (#3918) --- source/basic.tex | 2 +- source/declarations.tex | 6 +++--- source/expressions.tex | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index b032171f60..c9022f540f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -4314,7 +4314,7 @@ This includes accessibility\iref{class.access} and whether it is deleted, for the constructor selected and for the destructor. However, in the special case of the operand of a -\grammarterm{decltype-specifier}\iref{expr.call}, no temporary is introduced, +\grammarterm{decltype-specifier}\iref{dcl.type.decltype}, no temporary is introduced, so the foregoing does not apply to such a prvalue. \end{note} diff --git a/source/declarations.tex b/source/declarations.tex index 496a6ca350..7ae61099ef 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1999,7 +1999,7 @@ \opt{\grammarterm{type-constraint}} \tcode{decltype(auto)}, \tcode{T} shall be the placeholder alone. The type deduced for \tcode{T} is -determined as described in~\ref{dcl.type.simple}, as though +determined as described in~\ref{dcl.type.decltype}, as though $E$ had been the operand of the \tcode{decltype}. \begin{example} @@ -2746,7 +2746,7 @@ Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a \grammarterm{typedef-name}~(\ref{dcl.typedef}, \ref{temp.param}) or -\grammarterm{decltype-specifier}\iref{dcl.type.simple}, +\grammarterm{decltype-specifier}\iref{dcl.type.decltype}, in which case the cv-qualifiers are ignored. \begin{example} \begin{codeblock} @@ -2873,7 +2873,7 @@ \pnum \indextext{reference collapsing}% If a \grammarterm{typedef-name}~(\ref{dcl.typedef}, \ref{temp.param}) -or a \grammarterm{decltype-specifier}\iref{dcl.type.simple} denotes a type \tcode{TR} that +or a \grammarterm{decltype-specifier}\iref{dcl.type.decltype} denotes a type \tcode{TR} that is a reference to a type \tcode{T}, an attempt to create the type ``lvalue reference to \cv{}~\tcode{TR}'' creates the type ``lvalue reference to \tcode{T}'', while an attempt to create the type ``rvalue reference to \cv{}~\tcode{TR}'' creates the type \tcode{TR}. diff --git a/source/expressions.tex b/source/expressions.tex index 6518b70a20..17d243e087 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -266,7 +266,7 @@ and rvalues in other significant contexts. \pnum -Unless otherwise indicated\iref{dcl.type.simple}, +Unless otherwise indicated\iref{dcl.type.decltype}, a prvalue shall always have complete type or the \tcode{void} type; if it has a class type or (possibly multi-dimensional) array of class type, that class shall not be an abstract class\iref{class.abstract}. @@ -417,7 +417,7 @@ \ref{expr.typeid}, \ref{expr.sizeof}, \ref{expr.unary.noexcept}, -\ref{dcl.type.simple}, +\ref{dcl.type.decltype}, \ref{temp.pre}, \ref{temp.concept}). An unevaluated operand is not evaluated.