Skip to content
Open
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
fbea5df
CWG2555 Ineffective redeclaration prevention for using-declarators
eisenwave Nov 9, 2025
0b46aac
CWG2677 Replacing union subobjects
eisenwave Nov 9, 2025
58eb72c
CWG2875 Missing support for round-tripping null pointer values throug…
eisenwave Nov 9, 2025
a0f612a
[diff.expr] Replace "For example" with \begin{example} environment
eisenwave Nov 9, 2025
3f54620
CWG2900 Deduction of non-type template arguments with placeholder types
eisenwave Nov 9, 2025
ba7bc62
CWG2929 Lifetime of trivially-destructible static or thread-local obj…
eisenwave Nov 9, 2025
a2e7693
CWG2941 Lifetime extension for function-style cast to reference type
eisenwave Nov 9, 2025
ae10fd2
CWG3002 Template parameter/argument confusion
eisenwave Nov 9, 2025
a3248fa
CWG3004 Pointer arithmetic on array of unknown bound
eisenwave Nov 9, 2025
6412a95
CWG3008 Missing Annex C entry for void object declarations
eisenwave Nov 9, 2025
ad3d876
CWG3011 Parenthesized aggregate initialization for new-expressions
eisenwave Nov 9, 2025
4e0c8c4
CWG3032 Template argument disambiguation
eisenwave Nov 9, 2025
9bf159d
CWG3055 Misleading body for surrogate call function
eisenwave Nov 9, 2025
b225b39
CWG3056 Missing semicolons in grammar for type-requirement
eisenwave Nov 9, 2025
37b5a1d
CWG3057 Ranking of derived-to-base conversions should ignore referenc…
eisenwave Nov 9, 2025
8b70ad0
CWG3059 throw; in constant expressions
eisenwave Nov 9, 2025
fdecaf0
CWG3060 Change in behavior for noexcept main
eisenwave Nov 9, 2025
685911c
CWG3062 Overlapping specification of default template arguments
eisenwave Nov 9, 2025
4fedbfd
CWG3066 Declarative nested-name-specifier in explicit instantiation
eisenwave Nov 9, 2025
db9cebc
CWG3067 Array-to-pointer conversion with object type mismatch
eisenwave Nov 9, 2025
5a2ec28
CWG3070 Trivial assignment can skip member subobjects
eisenwave Nov 9, 2025
acb6a11
CWG3071 Negative tuple_size in structured bindings
eisenwave Nov 9, 2025
286fc2a
CWG3072 Incorrect examples for lambda SFINAE
eisenwave Nov 9, 2025
b826f10
CWG3073 Dependence of R on T2 is unclear
eisenwave Nov 9, 2025
8c13279
CWG3075 Unclear matching of import directive
eisenwave Nov 9, 2025
a02e829
CWG3076 Remove unnecessary IFNDR for malformed header-name-tokens
eisenwave Nov 9, 2025
4945423
CWG3077 Undesirable formation of import directive with string-literal
eisenwave Nov 9, 2025
0fcab2d
CWG3078 Different treatment of #include pp-tokens and header-name-tokens
eisenwave Nov 9, 2025
9d244fb
CWG3079 Allow empty-declarations in anonymous unions
eisenwave Nov 9, 2025
e94cace
CWG3080 Clarify kinds of permitted template template arguments
eisenwave Nov 9, 2025
c846736
CWG3081 Require glvalue when splicing direct base class relationship
eisenwave Nov 9, 2025
4c2743d
CWG3083 Remove redundant restrictions on class and enum definitions
eisenwave Nov 9, 2025
ff2a133
CWG3085 Apply restriction inside for-range-declaration
eisenwave Nov 9, 2025
e5c4531
CWG3086 Destringizing should consider all sorts of encoding-prefixes
eisenwave Nov 9, 2025
b06de55
CWG3090 Internal linkage from header units
eisenwave Nov 9, 2025
474d74d
CWG3091 Linking of translation units as sequences of tokens
eisenwave Nov 9, 2025
e8b5acf
CWG3096 Value-dependence of size of structured binding pack with non-…
eisenwave Nov 9, 2025
12beab9
CWG3097 Lambda expression introduces a scope
eisenwave Nov 9, 2025
e25aeff
CWG3100 Destruction order for objects with static storage duration
eisenwave Nov 9, 2025
a675df3
CWG3102 Update list of void contexts
eisenwave Nov 9, 2025
9161bf8
CWG3105 Consteval destructor through immediate escalation
eisenwave Nov 9, 2025
ef035ed
CWG3106 Redundant exclusion of (non-existent) UCNs in r-char-sequences
eisenwave Nov 9, 2025
df06f46
CWG3107 Misleading note "An alias template name is never deduced."
eisenwave Nov 9, 2025
f1e1301
CWG3111 Template parameter objects of array type
eisenwave Nov 9, 2025
3d1de3a
CWG3112 Introduce a term for C-style variadic functions
eisenwave Nov 9, 2025
5ac1488
CWG3116 First element of an array
eisenwave Nov 9, 2025
219d429
Fixup CWG2677: Use \defnadjx instead of \defnadj
eisenwave Nov 24, 2025
3ce24ee
Fixup CWG2677: Add missing "a"
eisenwave Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions source/basic.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3477,7 +3477,7 @@
An object that is not a subobject of any other object is called a \defn{complete
object}.
If an object is created
in storage associated with a member subobject or array element \placeholder{e}
in storage associated with a subobject \placeholder{e}
(which may or may not be within its lifetime),
the created object
is a subobject of \placeholder{e}'s containing object if
Expand All @@ -3487,8 +3487,12 @@
\item
the storage for the new object exactly overlays the storage location associated with \placeholder{e}, and
\item
\placeholder{e} is not a potentially-overlapping subobject, and
\item
the new object is of the same type as \placeholder{e} (ignoring cv-qualification).
\end{itemize}
In this case, \placeholder{e} and the created object are
\defnadj{corresponding direct}{subobjects}{subobject}.

\pnum
\indextext{object!providing storage for}%
Expand Down Expand Up @@ -4013,22 +4017,24 @@
\end{note}

\pnum
An object $o_1$ is \defn{transparently replaceable} by an object $o_2$ if
An object $o_1$ is \defn{transparently replaceable} by an object $o_2$ if either
\begin{itemize}
\item
$o_1$ and $o_2$ are complete objects for which:
\begin{itemize}
\item $o_1$ is not const,
\item the storage that $o_2$ occupies exactly overlays
the storage that $o_1$ occupied, and

\item $o_1$ and $o_2$ are of the same type
(ignoring the top-level cv-qualifiers), and

\item $o_1$ is not a const, complete object, and

\item neither $o_1$ nor $o_2$
is a potentially-overlapping subobject\iref{intro.object}, and
(ignoring the top-level cv-qualifiers), or
\end{itemize}

\item either $o_1$ and $o_2$ are both complete objects, or
$o_1$ and $o_2$ are direct subobjects of objects $p_1$ and $p_2$, respectively,
and $p_1$ is transparently replaceable by $p_2$.
\item
$o_1$ and $o_2$ are corresponding direct subobjects\iref{intro.object} for which:
\begin{itemize}
\item the complete object of $o_1$ is not const or
\item $o_1$ is a mutable member subobject or subobject thereof.
\end{itemize}
\end{itemize}

\pnum
Expand Down