This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 116a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-12-19
[Accepted at the July, 2022 meeting.]
Subclause 10.1 [module.unit] paragraph 7 implicitly attaches the replaceable global allocation or deallocation functions to the global module. Now that extern "C++" can be used to introduce declarations in the global module, even when in the purview of a named module, the provision seems superfluous.
Proposed resolution [SUPERSEDED]:
Change in 6.7.6.5.1 [basic.stc.dynamic.general] paragraph 2 as follows:
The library provides default definitions for the global allocation and deallocation functions. Some global allocation and deallocation functions are replaceable (17.6.3 [new.delete]). A C++ program shall provide at most one definition of a replaceable allocation or deallocation function. Any such function definition replaces the default version provided in the library (16.4.5.6 [replacement.functions]). The following allocation and deallocation functions (17.6 [support.dynamic]) are implicitly declared in global scope in each translation unit of a program and are attached to the global module (10.1 [module.unit]).
Change in 10.1 [module.unit] bullet 7.2 as follows:
- If the declaration is ...
- Otherwise, if the declaration
it is attached to the global module.
is a replaceable global allocation or deallocation function (17.6.3.2 [new.delete.single], 17.6.3.3 [new.delete.array]), or- is a namespace-definition with external linkage
,or- appears within a linkage-specification (9.11 [dcl.link])
,- Otherwise, ...
Additional notes (June, 2022):
Forwarded to EWG with paper issue 1273, by decision of the CWG chair.
Approved by EWG telecon 2022-07-07.
Proposed resolution (approved by CWG 2022-07-15):
Change in 6.7.6.5.1 [basic.stc.dynamic.general] paragraph 2 as follows:
The library provides default definitions for the global allocation and deallocation functions. Some global allocation and deallocation functions are replaceable (17.6.3 [new.delete]) ; these are attached to the global module 10.1 [module.unit]). A C++ program shall provide at most one definition of a replaceable allocation or deallocation function. Any such function definition replaces the default version provided in the library (16.4.5.6 [replacement.functions]). The following allocation and deallocation functions (17.6 [support.dynamic]) are implicitly declared in global scope in each translation unit of a program.
Change in 10.1 [module.unit] bullet 7.2 as follows:
- If the declaration is ...
- Otherwise, if the declaration
it is attached to the global module.
is a replaceable global allocation or deallocation function (17.6.3.2 [new.delete.single], 17.6.3.3 [new.delete.array]), or- is a namespace-definition with external linkage
,or- appears within a linkage-specification (9.11 [dcl.link])
,- Otherwise, ...