Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Imprecise cross-references for "trivially copyable type" #4630

Closed
jwakely opened this issue Jun 7, 2021 · 1 comment · Fixed by #5104
Closed

Imprecise cross-references for "trivially copyable type" #4630

jwakely opened this issue Jun 7, 2021 · 1 comment · Fixed by #5104
Assignees

Comments

@jwakely
Copy link
Member

jwakely commented Jun 7, 2021

[refwrap.general] says:

reference_wrapper<T> is a trivially copyable type (6.8).

Where 6.8 is [basic.types]. The definition of trivially copyable is in 6.8.1 [basic.types.general]. I assume we used to refer to the hanging paragraphs at the start of [basic.types] but they now have their own subclause. The cross-ref should have been updated to refer to that new subclause.

It looks like most cross-references to [basic.types] should actually be [basic.types.general]:

$ git grep '{basic.types}' *.tex
atomics.tex:on objects without padding bits\iref{basic.types} is
basic.tex:an incomplete type\iref{basic.types},
basic.tex:in~\ref{basic.types}.
basic.tex:type\iref{basic.types}.
basic.tex:standard-layout type\iref{basic.types} shall occupy contiguous bytes of
basic.tex:zero or more objects of implicit-lifetime types\iref{basic.types}
basic.tex:\ref{basic.types} and the subclauses thereof
basic.tex:Each set of values for any padding bits\iref{basic.types}
basic.tex:the width of that type has padding bits; see \ref{basic.types}.
basic.tex:\keyword{void}\iref{basic.types} has three corresponding cv-qualified
classes.tex:type\iref{basic.types} (or complete type) at the closing \tcode{\}} of
classes.tex:incomplete type\iref{basic.types},
classes.tex:both classes\iref{basic.types}.
classes.tex:types\iref{basic.types}.
classes.tex:\tcode{X} copies the object representation\iref{basic.types} of \tcode{X}.
classes.tex:union \tcode{X} copies the object representation\iref{basic.types} of \tcode{X}.
classes.tex:the extra bits are padding bits\iref{basic.types}.
compatibility.tex:\diffref{basic.types}
concepts.tex:  \item \tcode{T} is a literal type\iref{basic.types},
declarations.tex:is a scalar type\iref{basic.types}, the
declarations.tex:its padding bits\iref{basic.types} are initialized to zero bits and
declarations.tex:its padding bits\iref{basic.types} are initialized to zero bits and
expressions.tex:does not require that type to be complete\iref{basic.types}.
expressions.tex:and~\ref{basic.types} for the definition of object representation.
expressions.tex:thereof~(\ref{intro.object}, \ref{basic.types}, \ref{class.abstract}).
lib-intro.tex:\tcode{T, U, C}    &   any \cv-unqualified object type\iref{basic.types}       \\ \rowsep
lib-intro.tex:If an incomplete type\iref{basic.types} is used as a template
numerics.tex:\tcode{complex<long double>} are literal types\iref{basic.types}.
strings.tex:any non-array trivial standard-layout\iref{basic.types} type.
templates.tex:A template type argument can be an incomplete type\iref{basic.types}.
templates.tex:the instantiation yields an incomplete class type\iref{basic.types}.
templates.tex:classes\iref{basic.types}.
utilities.tex:representation\iref{basic.types} of \tcode{unsigned long long}.
utilities.tex:\tcode{T} is not an incomplete type\iref{basic.types}.
utilities.tex:type\iref{basic.types} that can be the type of the
utilities.tex:\tcode{reference_wrapper<T>} is a trivially copyable type\iref{basic.types}.
utilities.tex:subclause~\ref{basic.types} of the \Cpp{} standard.
utilities.tex:categories, corresponding to the descriptions given in subclause~\ref{basic.types}.
utilities.tex: \tcode{T} is an object type\iref{basic.types}                            &   \\ \rowsep
utilities.tex: \tcode{T} is a scalar type\iref{basic.types}                         &   \\ \rowsep
utilities.tex:is considered to be a trivial~(\ref{basic.types}, \ref{special}) function call
utilities.tex: \tcode{T} is a trivial type\iref{basic.types}     &
utilities.tex: \tcode{T} is a trivially copyable type\iref{basic.types} &
utilities.tex: \tcode{T} is a standard-layout type\iref{basic.types}   &
utilities.tex:  no operation that is not trivial~(\ref{basic.types}, \ref{special}). &
utilities.tex: ~(\ref{basic.types}, \ref{special}). &
utilities.tex: \tcode{T} and \tcode{U} are layout-compatible\iref{basic.types}    &
utilities.tex:is considered to be a trivial~(\ref{basic.types}, \ref{special}) function call
utilities.tex: is no greater than \tcode{Len}\iref{basic.types}.
@jensmaurer
Copy link
Member

We should define separate labels for defined terms and use these when we want to refer to the definition of the term. That makes the cross-reference survive refactorings of the text better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants