Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
68767ea
CWG2609 Padding in class types
burblebee Apr 4, 2026
5d6e9c8
CWG2744 Multiple objects of the same type at the same address
burblebee Apr 4, 2026
adcdd79
CWG2765 Address comparisons between potentially non-unique objects du…
burblebee Apr 4, 2026
5d65e7f
CWG2799 Inheriting default constructors
burblebee Apr 4, 2026
c2f1ab8
CWG2947 Limiting macro expansion in pp-module
burblebee Apr 4, 2026
7e8fea5
CWG2966 Alignment and value representation of std::nullptr_t
burblebee Apr 4, 2026
c3fbb89
CWG2976 Transferring control out of a function
burblebee Apr 4, 2026
2821d9c
CWG2983 Non-type template parameters are not variables
burblebee Apr 4, 2026
660f75c
CWG2992 Labels do not have names
burblebee Apr 5, 2026
c706a4e
CWG3010 constexpr placement-new should require transparent replaceabi…
burblebee Apr 5, 2026
ff3d471
CWG3029 Confusing note about ordinary character types for aligned mem…
burblebee Apr 5, 2026
e35e7c2
CWG3035 Lambda expressions in anonymous unions
burblebee Apr 5, 2026
13209c7
CWG3058 "Program point" is not defined
burblebee Apr 5, 2026
6181aa6
CWG3125 Token convertibility requirement in #if
burblebee Apr 5, 2026
3dfbe43
CWG3126 A module import needs a header-name as a token
burblebee Apr 5, 2026
4a2eed2
CWG3128 Potentially-throwing unevaluated operands
burblebee Apr 5, 2026
7f818ad
CWG3129 Clarify which floating-point-literals are valid
burblebee Apr 5, 2026
931cad9
CWG3130 Naming function members of anonymous unions
burblebee Apr 5, 2026
29022b7
CWG3132 Unclear disambiguation rule for condition
burblebee Apr 5, 2026
d339a26
CWG3133 Cv-qualified types in built-in operator candidates
burblebee Apr 5, 2026
870aab7
CWG3136 Constant expressions of type void
burblebee Apr 5, 2026
20e988a
CWG3142 Possible expansions of __LINE__ changing over time
burblebee Apr 6, 2026
c25b52e
[cpp.predefined] Insert "The integer literal" as introducer.
tkoeppe Apr 11, 2026
30b9804
CWG3148 Definition of "user-declared" special member function
burblebee Apr 6, 2026
383e447
CWG3151 Closure types that are final
burblebee Apr 6, 2026
e3b6062
CWG3153 Immediate-escalating defaulted comparison
burblebee Apr 6, 2026
a0b9b3b
CWG3155 Escalation of virtual functions
burblebee Apr 6, 2026
8c7d950
CWG3156 Handling of deleted functions in unevaluated lambda-captures
burblebee Apr 6, 2026
9959c52
CWG3157 Missing handling of operator new[] for deallocation function …
burblebee Apr 6, 2026
9b822e3
CWG3171 Codify the strong ownership for modules
burblebee Apr 6, 2026
30d255b
CWG3173 Remove misleading footnote about as-if rule
burblebee Apr 6, 2026
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
Prev Previous commit
Next Next commit
CWG3171 Codify the strong ownership for modules
Fixes NB US 17-030, FR 003-031 (C++26 CD).
  • Loading branch information
burblebee authored and tkoeppe committed Apr 11, 2026
commit 9b822e32e7d1ba9cb074b8cec8b55edbaede59a4
18 changes: 9 additions & 9 deletions source/basic.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3079,9 +3079,7 @@
\item
they both declare type aliases or namespace aliases that have the same underlying entity, or
\item
they both declare names with module linkage and are attached to the same module, or
\item
they both declare names with external linkage.
they both declare names with module or external linkage and are attached to the same module.
\end{itemize}
\begin{note}
There are other circumstances in which declarations declare
Expand All @@ -3098,9 +3096,11 @@
\end{note}

\pnum
If two declarations of an entity are
attached to different modules, the program is ill-formed;
no diagnostic is required if neither is reachable from the other.
\begin{note}
If two declarations correspond but are
attached to different modules, the program is ill-formed
if one precedes the other\iref{basic.scope.scope}.
\end{note}
\begin{example}
\begin{codeblocktu}{\tcode{"decls.h"}}
int f(); // \#1, attached to the global module
Expand All @@ -3112,15 +3112,15 @@
#include "decls.h"
export module M;
export using ::f; // OK, does not declare an entity, exports \#1
int g(); // error: matches \#2, but attached to \tcode{M}
int g(); // error: corresponds to \#2, but attached to \tcode{M}
export int h(); // \#3
export int k(); // \#4
\end{codeblocktu}

\begin{codeblocktu}{Other translation unit}
import M;
static int h(); // error: matches \#3
int k(); // error: matches \#4
static int h(); // error: conflicts with \#3
int k(); // error: conflicts with \#4
\end{codeblocktu}
\end{example}
As a consequence of these rules,
Expand Down