diff --git a/source/basic.tex b/source/basic.tex index a813f68d9c..8f22ef567e 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -3607,11 +3607,11 @@ \indextext{most derived object!bit-field}% Unless it is a bit-field\iref{class.bit}, an object with nonzero size -shall occupy one or more bytes of storage, +occupies one or more bytes of storage, including every byte that is occupied in full or in part by any of its subobjects. An object of trivially copyable or -standard-layout type\iref{basic.types.general} shall occupy contiguous bytes of +standard-layout type\iref{basic.types.general} occupies contiguous bytes of storage. \pnum @@ -3812,7 +3812,7 @@ expression for the fundamental types plus an additional \impldef{alignment additional values} set of values, which may be empty. -Every alignment value shall be a non-negative integral power of two. +Every alignment value is a non-negative integral power of two. \pnum Alignments have an order from \defnx{weaker}{alignment!weaker} to @@ -3823,7 +3823,7 @@ \pnum The alignment requirement of a complete type can be queried using an \keyword{alignof} expression\iref{expr.alignof}. Furthermore, -the narrow character types\iref{basic.fundamental} shall have the weakest +the narrow character types\iref{basic.fundamental} have the weakest alignment requirement. \begin{note} This enables the ordinary character types to be used as the @@ -4336,7 +4336,7 @@ \pnum If a variable with static storage duration has initialization or a -destructor with side effects, it shall not be eliminated even if it +destructor with side effects, an implementation shall not eliminate it even if it appears to be unused, except that a class object or its copy/move may be eliminated as specified in~\ref{class.copy.elision}. @@ -4526,7 +4526,7 @@ For an allocation function other than a reserved placement allocation function\iref{new.delete.placement}, the pointer returned on a successful call -shall represent the address of storage that is aligned as follows: +represents the address of storage that is aligned as follows: \begin{itemize} \item If the allocation function takes an argument @@ -4644,7 +4644,7 @@ \pnum If the argument given to a deallocation function in the standard library is a pointer that is not the null pointer value\iref{basic.compound}, the -deallocation function shall deallocate the storage referenced by the +deallocation function deallocates the storage referenced by the pointer, ending the duration of the region of storage. \rSec2[class.temporary]{Temporary objects} @@ -4980,21 +4980,21 @@ ends at the same point, these temporaries are destroyed at that point in the reverse order of the completion of their construction. -In addition, the destruction of such temporaries shall -take into account the ordering of destruction of objects with static, thread, or +In addition, the destruction of such temporaries +takes into account the ordering of destruction of objects with static, thread, or automatic storage duration\iref{basic.stc.static,basic.stc.thread,basic.stc.auto}; that is, if \tcode{obj1} is an object with the same storage duration as the temporary and created before the temporary is created -the temporary shall be destroyed before +the temporary is destroyed before \tcode{obj1} is destroyed; if \tcode{obj2} is an object with the same storage duration as the temporary and created after the temporary is created -the temporary shall be destroyed after +the temporary is destroyed after \tcode{obj2} is destroyed. @@ -5040,7 +5040,7 @@ is created before \tcode{T2}, \tcode{T2} -shall be destroyed before +is destroyed before \tcode{T1}. The temporaries \tcode{T1} @@ -5071,11 +5071,11 @@ is constructed before \tcode{obj2}, \tcode{obj2} -shall be destroyed before +is destroyed before \tcode{T3}, and \tcode{T3} -shall be destroyed before +is destroyed before \tcode{obj1}. \end{example} @@ -5110,7 +5110,7 @@ functions\iref{headers} \tcode{std::memcpy} or \tcode{std::memmove}. \end{footnote} If the content of that array -is copied back into the object, the object shall +is copied back into the object, the object will subsequently hold its original value. \begin{example} \begin{codeblock} @@ -5132,7 +5132,7 @@ By using, for example, the library functions\iref{headers} \tcode{std::memcpy} or \tcode{std::memmove}. \end{footnote} - \tcode{obj2} shall subsequently hold the same value as + \tcode{obj2} will subsequently hold the same value as \tcode{obj1}. \begin{example} \begin{codeblock} @@ -5442,7 +5442,7 @@ \pnum The width of each standard signed integer type -shall not be less than the values specified in \tref{basic.fundamental.width}. +is no less than the values specified in \tref{basic.fundamental.width}. The value representation of a signed or unsigned integer type comprises $N$ bits, where N is the respective width. Each set of values for any padding bits\iref{basic.types.general} @@ -5660,7 +5660,7 @@ A prvalue of type \tcode{std::nullptr_t} is a null pointer constant\iref{conv.ptr}. Such values participate in the pointer and the pointer-to-member conversions\iref{conv.ptr,conv.mem}. -\tcode{\keyword{sizeof}(std::nullptr_t)} shall be equal to \tcode{\keyword{sizeof}(\keyword{void}*)}. +\tcode{\keyword{sizeof}(std::nullptr_t)} is equal to \tcode{\keyword{sizeof}(\keyword{void}*)}. \pnum A value of type \tcode{std::meta::info} is called a \defn{reflection}. @@ -5970,7 +5970,7 @@ is considered to belong to an array with one element of type \tcode{T}. The value representation of pointer types is \impldef{value representation of pointer types}. Pointers to -layout-compatible types shall +layout-compatible types have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -6046,9 +6046,9 @@ \indextext{\idxcode{void*}!type}% A pointer to \cv{}~\keyword{void} can be used to point to objects of -unknown type. Such a pointer shall be able to hold any object pointer. +unknown type. Such a pointer can hold any object pointer. An object of type ``pointer to \cv{}~\keyword{void}'' -shall have the same representation and alignment +has the same representation and alignment requirements as an object of type ``pointer to \cv{}~\keyword{char}''. \rSec2[basic.type.qualifier]{CV-qualifiers} @@ -6063,7 +6063,7 @@ a \defn{const-qualified} version, a \defn{volatile-qualified} version, and a \defn{const-volatile-qualified} version. -The types in each such group shall have +The types in each such group have the same representation and alignment requirements\iref{basic.align}. \begin{footnote} The same representation and alignment requirements @@ -6459,7 +6459,7 @@ \placeholder{B}, if \placeholder{A} is sequenced before \placeholder{B} (or, equivalently, \placeholder{B} is \defn{sequenced after} \placeholder{A}), then the execution of -\placeholder{A} shall precede the execution of \placeholder{B}. If \placeholder{A} is not sequenced +\placeholder{A} precedes the execution of \placeholder{B}. If \placeholder{A} is not sequenced before \placeholder{B} and \placeholder{B} is not sequenced before \placeholder{A}, then \placeholder{A} and \placeholder{B} are \defn{unsequenced}. \begin{note} @@ -7005,7 +7005,7 @@ \item If there is only one thread that is not blocked\iref{defns.block} in a standard library function, - a lock-free execution in that thread shall complete. + a lock-free execution in that thread will complete. \begin{note} Concurrently executing threads might prevent progress of a lock-free execution.