|
3607 | 3607 | \indextext{most derived object!bit-field}% |
3608 | 3608 | Unless it is a bit-field\iref{class.bit}, |
3609 | 3609 | an object with nonzero size |
3610 | | -shall occupy one or more bytes of storage, |
| 3610 | +occupies one or more bytes of storage, |
3611 | 3611 | including every byte that is occupied in full or in part |
3612 | 3612 | by any of its subobjects. |
3613 | 3613 | An object of trivially copyable or |
3614 | | -standard-layout type\iref{basic.types.general} shall occupy contiguous bytes of |
| 3614 | +standard-layout type\iref{basic.types.general} occupies contiguous bytes of |
3615 | 3615 | storage. |
3616 | 3616 |
|
3617 | 3617 | \pnum |
|
3812 | 3812 | expression for the fundamental types plus an additional \impldef{alignment additional |
3813 | 3813 | values} |
3814 | 3814 | set of values, which may be empty. |
3815 | | -Every alignment value shall be a non-negative integral power of two. |
| 3815 | +Every alignment value is a non-negative integral power of two. |
3816 | 3816 |
|
3817 | 3817 | \pnum |
3818 | 3818 | Alignments have an order from \defnx{weaker}{alignment!weaker} to |
|
3823 | 3823 | \pnum |
3824 | 3824 | The alignment requirement of a complete type can be queried using an |
3825 | 3825 | \keyword{alignof} expression\iref{expr.alignof}. Furthermore, |
3826 | | -the narrow character types\iref{basic.fundamental} shall have the weakest |
| 3826 | +the narrow character types\iref{basic.fundamental} have the weakest |
3827 | 3827 | alignment requirement. |
3828 | 3828 | \begin{note} |
3829 | 3829 | This enables the ordinary character types to be used as the |
|
4336 | 4336 |
|
4337 | 4337 | \pnum |
4338 | 4338 | If a variable with static storage duration has initialization or a |
4339 | | -destructor with side effects, it shall not be eliminated even if it |
| 4339 | +destructor with side effects, an implementation shall not eliminate it even if it |
4340 | 4340 | appears to be unused, except that a class object or its copy/move may be |
4341 | 4341 | eliminated as specified in~\ref{class.copy.elision}. |
4342 | 4342 |
|
|
4526 | 4526 | For an allocation function other than |
4527 | 4527 | a reserved placement allocation function\iref{new.delete.placement}, |
4528 | 4528 | the pointer returned on a successful call |
4529 | | -shall represent the address of storage that is aligned as follows: |
| 4529 | +represents the address of storage that is aligned as follows: |
4530 | 4530 | \begin{itemize} |
4531 | 4531 | \item |
4532 | 4532 | If the allocation function takes an argument |
|
4644 | 4644 | \pnum |
4645 | 4645 | If the argument given to a deallocation function in the standard library |
4646 | 4646 | is a pointer that is not the null pointer value\iref{basic.compound}, the |
4647 | | -deallocation function shall deallocate the storage referenced by the |
| 4647 | +deallocation function deallocates the storage referenced by the |
4648 | 4648 | pointer, ending the duration of the region of storage. |
4649 | 4649 |
|
4650 | 4650 | \rSec2[class.temporary]{Temporary objects} |
|
4980 | 4980 | ends at the same point, |
4981 | 4981 | these temporaries are destroyed at that point in the reverse order of the |
4982 | 4982 | completion of their construction. |
4983 | | -In addition, the destruction of such temporaries shall |
4984 | | -take into account the ordering of destruction of objects with static, thread, or |
| 4983 | +In addition, the destruction of such temporaries |
| 4984 | +takes into account the ordering of destruction of objects with static, thread, or |
4985 | 4985 | automatic storage duration\iref{basic.stc.static,basic.stc.thread,basic.stc.auto}; |
4986 | 4986 | that is, if |
4987 | 4987 | \tcode{obj1} |
4988 | 4988 | is an object with the same storage duration as the temporary and |
4989 | 4989 | created before the temporary is created |
4990 | | -the temporary shall be destroyed before |
| 4990 | +the temporary is destroyed before |
4991 | 4991 | \tcode{obj1} |
4992 | 4992 | is destroyed; |
4993 | 4993 | if |
4994 | 4994 | \tcode{obj2} |
4995 | 4995 | is an object with the same storage duration as the temporary and |
4996 | 4996 | created after the temporary is created |
4997 | | -the temporary shall be destroyed after |
| 4997 | +the temporary is destroyed after |
4998 | 4998 | \tcode{obj2} |
4999 | 4999 | is destroyed. |
5000 | 5000 |
|
|
5040 | 5040 | is created before |
5041 | 5041 | \tcode{T2}, |
5042 | 5042 | \tcode{T2} |
5043 | | -shall be destroyed before |
| 5043 | +is destroyed before |
5044 | 5044 | \tcode{T1}. |
5045 | 5045 | The temporaries |
5046 | 5046 | \tcode{T1} |
|
5071 | 5071 | is constructed before |
5072 | 5072 | \tcode{obj2}, |
5073 | 5073 | \tcode{obj2} |
5074 | | -shall be destroyed before |
| 5074 | +is destroyed before |
5075 | 5075 | \tcode{T3}, |
5076 | 5076 | and |
5077 | 5077 | \tcode{T3} |
5078 | | -shall be destroyed before |
| 5078 | +is destroyed before |
5079 | 5079 | \tcode{obj1}. |
5080 | 5080 | \end{example} |
5081 | 5081 |
|
|
5110 | 5110 | functions\iref{headers} \tcode{std::memcpy} or \tcode{std::memmove}. |
5111 | 5111 | \end{footnote} |
5112 | 5112 | If the content of that array |
5113 | | -is copied back into the object, the object shall |
| 5113 | +is copied back into the object, the object will |
5114 | 5114 | subsequently hold its original value. |
5115 | 5115 | \begin{example} |
5116 | 5116 | \begin{codeblock} |
|
5132 | 5132 | By using, for example, |
5133 | 5133 | the library functions\iref{headers} \tcode{std::memcpy} or \tcode{std::memmove}. |
5134 | 5134 | \end{footnote} |
5135 | | - \tcode{obj2} shall subsequently hold the same value as |
| 5135 | + \tcode{obj2} will subsequently hold the same value as |
5136 | 5136 | \tcode{obj1}. |
5137 | 5137 | \begin{example} |
5138 | 5138 | \begin{codeblock} |
|
5442 | 5442 |
|
5443 | 5443 | \pnum |
5444 | 5444 | The width of each standard signed integer type |
5445 | | -shall not be less than the values specified in \tref{basic.fundamental.width}. |
| 5445 | +is no less than the values specified in \tref{basic.fundamental.width}. |
5446 | 5446 | The value representation of a signed or unsigned integer type |
5447 | 5447 | comprises $N$ bits, where N is the respective width. |
5448 | 5448 | Each set of values for any padding bits\iref{basic.types.general} |
|
5660 | 5660 | A prvalue of type \tcode{std::nullptr_t} is a null pointer |
5661 | 5661 | constant\iref{conv.ptr}. Such values participate in the pointer and the |
5662 | 5662 | pointer-to-member conversions\iref{conv.ptr,conv.mem}. |
5663 | | -\tcode{\keyword{sizeof}(std::nullptr_t)} shall be equal to \tcode{\keyword{sizeof}(\keyword{void}*)}. |
| 5663 | +\tcode{\keyword{sizeof}(std::nullptr_t)} is equal to \tcode{\keyword{sizeof}(\keyword{void}*)}. |
5664 | 5664 |
|
5665 | 5665 | \pnum |
5666 | 5666 | A value of type \tcode{std::meta::info} is called a \defn{reflection}. |
|
5970 | 5970 | is considered to belong to an array with one element of type \tcode{T}. |
5971 | 5971 | The value representation of |
5972 | 5972 | pointer types is \impldef{value representation of pointer types}. Pointers to |
5973 | | -layout-compatible types shall |
| 5973 | +layout-compatible types |
5974 | 5974 | have the same value representation and alignment |
5975 | 5975 | requirements\iref{basic.align}. |
5976 | 5976 | \begin{note} |
|
6046 | 6046 | \indextext{\idxcode{void*}!type}% |
6047 | 6047 | A pointer to \cv{}~\keyword{void} |
6048 | 6048 | can be used to point to objects of |
6049 | | -unknown type. Such a pointer shall be able to hold any object pointer. |
| 6049 | +unknown type. Such a pointer can hold any object pointer. |
6050 | 6050 | An object of type ``pointer to \cv{}~\keyword{void}'' |
6051 | | -shall have the same representation and alignment |
| 6051 | +has the same representation and alignment |
6052 | 6052 | requirements as an object of type ``pointer to \cv{}~\keyword{char}''. |
6053 | 6053 |
|
6054 | 6054 | \rSec2[basic.type.qualifier]{CV-qualifiers} |
|
6063 | 6063 | a \defn{const-qualified} version, |
6064 | 6064 | a \defn{volatile-qualified} version, and |
6065 | 6065 | a \defn{const-volatile-qualified} version. |
6066 | | -The types in each such group shall have |
| 6066 | +The types in each such group have |
6067 | 6067 | the same representation and alignment requirements\iref{basic.align}. |
6068 | 6068 | \begin{footnote} |
6069 | 6069 | The same representation and alignment requirements |
|
6459 | 6459 | \placeholder{B}, if \placeholder{A} is sequenced before \placeholder{B} |
6460 | 6460 | (or, equivalently, \placeholder{B} is \defn{sequenced after} \placeholder{A}), |
6461 | 6461 | then the execution of |
6462 | | -\placeholder{A} shall precede the execution of \placeholder{B}. If \placeholder{A} is not sequenced |
| 6462 | +\placeholder{A} precedes the execution of \placeholder{B}. If \placeholder{A} is not sequenced |
6463 | 6463 | before \placeholder{B} and \placeholder{B} is not sequenced before \placeholder{A}, then \placeholder{A} and |
6464 | 6464 | \placeholder{B} are \defn{unsequenced}. |
6465 | 6465 | \begin{note} |
|
7005 | 7005 | \item |
7006 | 7006 | If there is only one thread that is not blocked\iref{defns.block} |
7007 | 7007 | in a standard library function, |
7008 | | - a lock-free execution in that thread shall complete. |
| 7008 | + a lock-free execution in that thread will complete. |
7009 | 7009 | \begin{note} |
7010 | 7010 | Concurrently executing threads |
7011 | 7011 | might prevent progress of a lock-free execution. |
|
0 commit comments