|
54 | 54 | an object. The variable's name, if any, denotes the reference or object.
|
55 | 55 |
|
56 | 56 | \pnum
|
57 |
| -A \defn{local entity} is a variable with |
| 57 | +A \defnadj{local}{entity} is a variable with |
58 | 58 | automatic storage duration\iref{basic.stc.auto},
|
59 | 59 | a structured binding\iref{dcl.struct.bind}
|
60 | 60 | whose corresponding variable is such an entity,
|
|
216 | 216 | \begin{note}
|
217 | 217 | \indextext{implementation-generated}%
|
218 | 218 | In some circumstances, \Cpp{} implementations implicitly define the
|
219 |
| -default constructor\iref{class.ctor}, |
| 219 | +default constructor\iref{class.default.ctor}, |
220 | 220 | copy constructor, move constructor\iref{class.copy.ctor},
|
221 | 221 | copy assignment operator, move assignment operator\iref{class.copy.assign},
|
222 | 222 | or destructor\iref{class.dtor} member functions.
|
|
357 | 357 | A variable \tcode{x} whose name appears as a
|
358 | 358 | potentially-evaluated expression \tcode{ex} is \defnx{odr-used}{odr-use} by \tcode{ex} unless
|
359 | 359 | applying the lvalue-to-rvalue conversion\iref{conv.lval} to \tcode{x} yields
|
360 |
| -a constant expression\iref{expr.const} that does not invoke any non-trivial |
361 |
| -functions |
| 360 | +a constant expression\iref{expr.const} |
| 361 | +that does not invoke a function |
| 362 | +other than a trivial special member function\iref{special} |
362 | 363 | and, if \tcode{x} is an object, \tcode{ex} is an element of
|
363 | 364 | the set of potential results of an expression \tcode{e}, where either the lvalue-to-rvalue
|
364 | 365 | conversion\iref{conv.lval} is applied to \tcode{e}, or \tcode{e} is
|
|
412 | 413 | within the innermost enclosing class or non-lambda function definition scope),
|
413 | 414 | either:
|
414 | 415 | \begin{itemize}
|
415 |
| -\item the declarative region is a block scope, or |
416 |
| -\item the declarative region is the function parameter scope of a \grammarterm{lambda-expression} |
| 416 | +\item the intervening declarative region is a block scope, or |
| 417 | +\item the intervening declarative region is the function parameter scope of a \grammarterm{lambda-expression} |
417 | 418 | that has a \grammarterm{simple-capture} naming the entity or has a \grammarterm{capture-default}.
|
418 | 419 | \end{itemize}
|
419 | 420 | \end{itemize}
|
|
440 | 441 | outside of a discarded statement\iref{stmt.if}; no diagnostic required.
|
441 | 442 | The definition can appear explicitly in the program, it can be found in
|
442 | 443 | the standard or a user-defined library, or (when appropriate) it is
|
443 |
| -implicitly defined (see~\ref{class.ctor}, \ref{class.dtor}, |
444 |
| -\ref{class.copy.ctor}, and \ref{class.copy.assign}). |
| 444 | +implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, |
| 445 | +\ref{class.dtor}, and \ref{class.copy.assign}). |
445 | 446 | An inline function or variable shall be defined in every
|
446 | 447 | translation unit in which it is odr-used outside of a discarded statement.
|
447 | 448 |
|
|
561 | 562 | and violation continuation mode; and
|
562 | 563 |
|
563 | 564 | \item if \tcode{D} is a class with an implicitly-declared
|
564 |
| -constructor\iref{class.ctor}, it is as if the constructor was |
| 565 | +constructor (\ref{class.default.ctor}, \ref{class.copy.ctor}), |
| 566 | +it is as if the constructor was |
565 | 567 | implicitly defined in every translation unit where it is odr-used, and the
|
566 | 568 | implicit definition in every translation unit shall call the same
|
567 | 569 | constructor for a subobject of \tcode{D}.
|
|
972 | 974 | namespace in a \grammarterm{using-directive}; see~\ref{namespace.qual}.
|
973 | 975 |
|
974 | 976 | \pnum
|
975 |
| -\indextext{scope!global namespace}% |
976 |
| -\indextext{scope!global}% |
977 | 977 | The outermost declarative region of a translation unit is also a
|
978 |
| -namespace, called the \defn{global namespace}. A name declared in |
979 |
| -the global namespace has \defn{global namespace scope} (also called |
980 |
| -\defn{global scope}). The potential scope of such a name begins at |
| 978 | +namespace, called the \defnadj{global}{namespace}. A name declared in |
| 979 | +the global namespace has \defnadj{global}{namespace scope} (also called |
| 980 | +\defnadj{global}{scope}). The potential scope of such a name begins at |
981 | 981 | its point of declaration\iref{basic.scope.pdecl} and ends at the end
|
982 | 982 | of the translation unit that is its declarative region.
|
983 |
| -\indextext{name!global}% |
984 | 983 | A name with global namespace scope is said to be a
|
985 |
| -\defnx{global name}{global}. |
| 984 | +\defnadj{global}{name}. |
986 | 985 |
|
987 | 986 | \rSec2[basic.scope.class]{Class scope}
|
988 | 987 | \indextext{scope!class}%
|
|
2588 | 2587 | width. \end{note}
|
2589 | 2588 |
|
2590 | 2589 | \pnum
|
2591 |
| -\begin{example} A structure declared as |
| 2590 | +\begin{example} A class declared as |
2592 | 2591 |
|
2593 | 2592 | \begin{codeblock}
|
2594 | 2593 | struct {
|
|
2840 | 2839 | \indextext{object lifetime|(}%
|
2841 | 2840 | The \defn{lifetime} of an object or reference is a runtime property of the
|
2842 | 2841 | object or reference.
|
2843 |
| -An object is said to have \defnx{non-vacuous initialization}{initialization!non-vacuous} if it is of a class or |
2844 |
| -aggregate type and it or one of its subobjects is initialized by a constructor |
| 2842 | +An object is said to have \defnadj{non-vacuous}{initialization} if it is of a class or |
| 2843 | +array type and it or one of its subobjects is initialized by a constructor |
2845 | 2844 | other than a trivial default constructor. \begin{note} Initialization by a
|
2846 | 2845 | trivial copy/move constructor is non-vacuous initialization. \end{note}
|
2847 | 2846 | The lifetime of an object of type \tcode{T} begins when:
|
|
3167 | 3166 | \rSec3[basic.stc.thread]{Thread storage duration}
|
3168 | 3167 |
|
3169 | 3168 | \pnum
|
3170 |
| -\indextext{storage duration!thread}% |
3171 |
| -All variables declared with the \tcode{thread_local} keyword have \defn{thread |
3172 |
| -storage duration}. The storage for these entities shall last for the duration of |
| 3169 | +All variables declared with the \tcode{thread_local} keyword have |
| 3170 | +\defnadj{thread}{storage duration}. |
| 3171 | +The storage for these entities shall last for the duration of |
3173 | 3172 | the thread in which they are created. There is a distinct object or reference
|
3174 | 3173 | per thread, and use of the declared name refers to the entity associated with
|
3175 | 3174 | the current thread.
|
|
3181 | 3180 | \rSec3[basic.stc.auto]{Automatic storage duration}
|
3182 | 3181 |
|
3183 | 3182 | \pnum
|
3184 |
| -\indextext{storage duration!automatic}% |
3185 | 3183 | \indextext{storage duration!local object}%
|
3186 | 3184 | Block-scope variables
|
3187 | 3185 | not explicitly declared \tcode{static}, \tcode{thread_local}, or \tcode{extern} have
|
3188 |
| -\defn{automatic storage duration}. The storage |
| 3186 | +\defnadj{automatic}{storage duration}. The storage |
3189 | 3187 | for these entities lasts until the block in which they are created exits.
|
3190 | 3188 |
|
3191 | 3189 | \pnum
|
|
3365 | 3363 |
|
3366 | 3364 | \pnum
|
3367 | 3365 | A deallocation function
|
3368 |
| -is a \defn{destroying operator delete} |
| 3366 | +is a \defnadj{destroying}{operator delete} |
3369 | 3367 | if it has at least two parameters
|
3370 | 3368 | and its second parameter
|
3371 | 3369 | is of type \tcode{std::destroying_delete_t}.
|
|
3558 | 3556 | greater than \tcode{alignof(std::max_align_t)}. It is \impldef{support for extended alignments}
|
3559 | 3557 | whether any extended alignments are supported and the contexts in which they are
|
3560 | 3558 | supported\iref{dcl.align}. A type having an extended alignment
|
3561 |
| -requirement is an \defnx{over-aligned type}{type!over-aligned}. \begin{note} |
| 3559 | +requirement is an \defnadj{over-aligned}{type}. \begin{note} |
3562 | 3560 | Every over-aligned type is or contains a class type
|
3563 | 3561 | to which extended alignment applies (possibly through a non-static data member).
|
3564 | 3562 | \end{note}
|
|
3617 | 3615 | Temporary objects are created
|
3618 | 3616 | \begin{itemize}
|
3619 | 3617 | \item
|
3620 |
| -when a prvalue is materialized so that it can be used as a glvalue\iref{conv.rval}, |
| 3618 | +when a prvalue is converted to an xvalue\iref{conv.rval}, |
3621 | 3619 | \item
|
3622 | 3620 | when needed by the implementation to pass or return an object of trivially-copyable type (see below),
|
3623 | 3621 | and
|
|
3731 | 3729 | \indextext{temporary!destructor for}%
|
3732 | 3730 | \indextext{temporary!destruction of}%
|
3733 | 3731 | When an implementation introduces a temporary object of a class that has a
|
3734 |
| -non-trivial constructor~(\ref{class.ctor}, \ref{class.copy.ctor}), |
| 3732 | +non-trivial constructor~(\ref{class.default.ctor}, \ref{class.copy.ctor}), |
3735 | 3733 | it shall ensure that a constructor is called for the temporary object.
|
3736 | 3734 | Similarly, the destructor shall be called for a temporary with a non-trivial
|
3737 | 3735 | destructor\iref{class.dtor}.
|
|
4053 | 4051 | A class that has been declared but not defined, an enumeration type in certain
|
4054 | 4052 | contexts\iref{dcl.enum}, or an array of unknown
|
4055 | 4053 | bound or of incomplete element type, is an
|
4056 |
| -\defnx{incompletely-defined object type}{object type!incompletely-defined}.% |
| 4054 | +\defnadj{incompletely-defined}{object type}.% |
4057 | 4055 | \footnote{The size and layout of an instance of an incompletely-defined
|
4058 | 4056 | object type is unknown.}
|
4059 | 4057 | Incompletely-defined object types and \cv{}~\tcode{void} are
|
|
4123 | 4121 | cv-qualified\iref{basic.type.qualifier} versions of these
|
4124 | 4122 | types are collectively called
|
4125 | 4123 | \defnx{scalar types}{scalar type}.
|
4126 |
| -Cv-unqualified scalar types, trivially copyable class types\iref{class.prop}, |
| 4124 | +Scalar types, trivially copyable class types\iref{class.prop}, |
4127 | 4125 | arrays of such types, and cv-qualified versions of these
|
4128 | 4126 | types are collectively called \defn{trivially copyable types}.
|
4129 | 4127 | Scalar types, trivial class types\iref{class.prop},
|
|
4450 | 4448 | \item
|
4451 | 4449 | \defnx{enumerations}{\idxcode{enum}}, which comprise a set of named constant values.
|
4452 | 4450 | Each distinct enumeration constitutes a different
|
4453 |
| -\defnx{enumerated type}{type!enumerated}, \ref{dcl.enum}; |
| 4451 | +\defnadj{enumerated}{type}, \ref{dcl.enum}; |
4454 | 4452 |
|
4455 | 4453 | \item \indextext{member pointer to|see{pointer to member}}%
|
4456 | 4454 | \defnx{pointers to non-static class members}{pointer to member},%
|
|
4579 | 4577 | \indextext{\idxcode{const}}%
|
4580 | 4578 | \indextext{\idxcode{volatile}}%
|
4581 | 4579 | A type mentioned in~\ref{basic.fundamental} and~\ref{basic.compound} is
|
4582 |
| -a \defnx{cv-unqualified type}{type!cv-unqualified}. Each type which is a |
| 4580 | +a \defnadj{cv-unqualified}{type}. Each type which is a |
4583 | 4581 | cv-unqualified complete or incomplete object type or is
|
4584 | 4582 | \tcode{void}\iref{basic.types} has three corresponding cv-qualified
|
4585 | 4583 | versions of its type: a \defn{const-qualified} version, a
|
|
4591 | 4589 | \grammarterm{type-id}\iref{dcl.name}, or
|
4592 | 4590 | \grammarterm{new-type-id}\iref{expr.new} when the object is created.
|
4593 | 4591 | \begin{itemize}
|
4594 |
| -\item A \defnx{const object}{object!const} is an object of type \tcode{const T} or a |
| 4592 | +\item A \defnadj{const}{object} is an object of type \tcode{const T} or a |
4595 | 4593 | non-mutable subobject of such an object.
|
4596 | 4594 |
|
4597 |
| -\item A \defnx{volatile object}{object!volatile} is an object of type |
| 4595 | +\item A \defnadj{volatile}{object} is an object of type |
4598 | 4596 | \tcode{volatile T}, a subobject of such an object, or a mutable
|
4599 | 4597 | subobject of a const volatile object.
|
4600 | 4598 |
|
4601 |
| -\item A \defnx{const volatile object}{object!const volatile} is an object of type |
| 4599 | +\item A \defnadj{const volatile}{object} is an object of type |
4602 | 4600 | \tcode{const volatile T}, a non-mutable subobject of such an object,
|
4603 | 4601 | a const subobject of a volatile object, or a non-mutable volatile
|
4604 | 4602 | subobject of a const object.
|
|
5212 | 5210 | \end{note}
|
5213 | 5211 |
|
5214 | 5212 | \pnum
|
5215 |
| -A \defnx{visible side effect}{side effects!visible} \placeholder{A} on a scalar object or bit-field \placeholder{M} |
| 5213 | +A \defnadj{visible}{side effect} \placeholder{A} on a scalar object or bit-field \placeholder{M} |
5216 | 5214 | with respect to a value computation \placeholder{B} of \placeholder{M} satisfies the
|
5217 | 5215 | conditions:
|
5218 | 5216 | \begin{itemize}
|
|
0 commit comments