This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++23 status.
Section: 16.3.3.7 [freestanding.item] Status: C++23 Submitter: Ben Craig Opened: 2022-08-23 Last modified: 2023-11-22
Priority: 2
View all other issues in [freestanding.item].
View all issues with C++23 status.
Discussion:
This addresses NB comment GB-075 ( [freeestanding.entity] "Freestanding entities" are not entities)
[freestanding.entity] p1 defines a freestanding entity as a declaration or macro definition.
[freestanding.entity] p3 then says "entities followed with a comment […] are freestanding entities".
This is inconsistent, and breaks with macros, because macros are not entities, but they can be freestanding entities.
[2022-09-23; Reflector poll]
Set priority to 2 after reflector poll.
It's confusing for "freestanding entities" to be two things, neither of which are entities. Declarations may declare entities, they are not entities themselves. Given this definition, p6/7/8 makes no sense. A namespace can't be a freestanding entity since it's neither a declaration nor a macro definition.
"freestanding entities" is not best name, given the collision with core entity, but I think that this is separable issue.
[2022-09-28; Reflector poll]
Set status to Tentatively Ready after five votes in favour during reflector poll.
Previous resolution [SUPERSEDED]:
This wording is relative to the forthcoming C++23 CD.
Modify [freestanding.entity] as indicated:
-3- In a header synopsis,entitiesfollowed with a comment that includes freestanding are freestanding entities.
[2022-11-06; Ben Craig provides new wording]
[2022-11-07; Kona - move to open]
New proposed resolution to be added.
Previous resolution [SUPERSEDED]:
This wording is relative to N4917.
Modify [freestanding.entity] as indicated:
[Drafting note: Replace the section name [freestanding.entity] by [freestanding.item] throughout the working draft]
16.3.3.6 Freestanding
-1- A freestandingentities[freestanding.entity]entityisa declarationor macro definition that is present in a freestanding implementation and a hosted implementation. -2- Unless otherwise specified, the requirements on freestandingentitieson a freestanding implementation are the same as the corresponding requirements in a hosted implementation. -3- In a header synopsis, entities followed with a comment that includes freestanding are freestandingentities. […] -4- If a header synopsis begins with a comment that includes all freestanding, then all of the declarationsand macro definitionsin the header synopsis are freestandingentities. […] -5- Deduction guides for freestandingentityclass templates are freestandingentities. -6- Enclosing namespaces of freestandingentitiesare freestandingentities. -7- Friends of freestandingentitiesare freestandingentities. -8- Entities denoted by freestandingentitytypedef-names and freestandingentityalias templates are freestandingentities.Modify 16.4.2.5 [compliance] as indicated:
-3- For each of the headers listed in Table 28, a freestanding implementation provides at least the freestanding
entities( [freestanding.entity]) declared in the header.Modify 22.10.15.5 [func.bind.place] as indicated:
-3- Placeholders are freestanding
entities( [freestanding.entity]).
[2022-11-08; Ben Craig provides improved wording]
This combined resolution addresses both 3753 and LWG 3815(i), and has already been reviewed by LWG.
This resolves ballot comment GB-75. It also partially addresses GB-130 (along with LWG 3814(i)).
Previous resolution [SUPERSEDED]:
This wording is relative to N4917.
Modify 16.3.3.6 [freestanding.entity] as indicated:
[Drafting note: Replace the section name [freestanding.entity] by [freestanding.item] throughout the working draft]
16.3.3.6 Freestanding
-1- A freestandingentities[freestanding.entity]entityisa declarationor macro definition that is present in a freestanding implementation and a hosted implementation. -2- Unless otherwise specified, the requirements on freestandingentitieson a freestanding implementation are the same as the corresponding requirements in a hosted implementation. -3- In a header synopsis,entitiesfollowedwitha comment that includes freestandingarefreestandingentities. […] -4- If a header synopsis begins with a comment that includes all freestanding, thenall of the declarations and macro definitionsin the header synopsisarefreestandingentities. […]-5- Deduction guides for freestanding entity class templates are freestanding entities.-6-Enclosing namespaces of freestanding entities are freestanding entities.-7-Friends of freestanding entities are freestanding entities.-8-Entities denoted by freestanding entity typedef-names and freestanding entity alias templates are freestanding entities.Modify 16.4.2.5 [compliance] as indicated:
-3- For each of the headers listed in Table 28, a freestanding implementation provides at least the freestanding
entities(16.3.3.6 [freestanding.entity]) declared in the header.Modify 22.10.15.5 [func.bind.place] as indicated:
-3- Placeholders are freestanding
entities(16.3.3.6 [freestanding.entity]).
[2022-11-09; Ben Craig and Tomasz provide improved wording]
This new resolution merges definition of freestanding item for entity in macro into bullet lists. It still addresses both 3753 and LWG 3815(i).
This resolves ballot comment GB-75. It also partially addresses GB-130 (along with LWG 3814(i)).
Previous resolution [SUPERSEDED]:
This wording is relative to N4917.
Modify [freestanding.entity] as indicated:
[Drafting note: Replace the section name [freestanding.entity] by [freestanding.item] throughout the working draft]
16.3.3.6 Freestanding
-1- A freestandingentities[freestanding.entity]entityisa declarationor macro definition that is present in a freestanding implementation and a hosted implementation. -2- Unless otherwise specified, the requirements on freestandingentitiesona freestanding implementation are the same as the corresponding requirementsina hosted implementation.
-3- In a header synopsis, entities followed with a comment that includes freestanding are freestanding entities.[Example 1: … — end example]-4- If a header synopsis begins with a comment that includes all freestanding, then all of the declarations and macro definitions in the header synopsis are freestanding entities..[Example 2: … — end example]-5- Deduction guides for freestanding entity class templates are freestanding entities.-6- Enclosing namespaces of freestanding entities are freestanding entities.-7- Friends of freestanding entities are freestanding entities.-8- Entities denoted by freestanding entity typedef-names and freestanding entity alias templates are freestanding entities.Modify 16.4.2.5 [compliance] as indicated:
-3- For each of the headers listed in Table 28, a freestanding implementation provides at least the freestanding
entities(16.3.3.6 [freestanding.entity]) declared in the header.Modify 22.10.15.5 [func.bind.place] as indicated:
-3- Placeholders are freestanding
entities(16.3.3.6 [freestanding.entity]).
[2022-11-10; Tomasz provide improved wording]
Updated wording to support freestanding typedef-names and using declaration that are not entities. It still addresses both 3753 and LWG 3815(i).
This resolves ballot comment GB-75. It also partially addresses GB-130 (along with LWG 3814(i)).
[Kona 2022-11-10; Move to Immediate]
[2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Immediate → WP.]
Proposed resolution:
This wording is relative to N4917.
Modify [freestanding.entity] as indicated:
[Drafting note: Replace the section name [freestanding.entity] by [freestanding.item] throughout the working draft]
16.3.3.6 Freestanding
-1- A freestandingentities[freestanding.entity]entityis a declaration or macrodefinitionthat is present in a freestanding implementation and a hosted implementation. -2- Unless otherwise specified, the requirements on freestandingentitiesona freestanding implementation are the same as the corresponding requirementsina hosted implementation.
-3- In a header synopsis, entities followed with a comment that includes freestanding are freestanding entities.[Example 1: … — end example]-4- If a header synopsis begins with a comment that includes all freestanding, then all of the declarations and macro definitions in the header synopsis are freestanding entities..[Example 2: … — end example]-5- Deduction guides for freestanding entity class templates are freestanding entities.-6- Enclosing namespaces of freestanding entities are freestanding entities.-7- Friends of freestanding entities are freestanding entities.-8- Entities denoted by freestanding entity typedef-names and freestanding entity alias templates are freestanding entities.
Modify 16.4.2.5 [compliance] as indicated:
-3- For each of the headers listed in Table 28, a freestanding implementation provides at least the freestanding
entities(16.3.3.6 [freestanding.entity]) declared in the header.
Modify 22.10.15.5 [func.bind.place] as indicated:
-3- Placeholders are freestanding
entities(16.3.3.6 [freestanding.entity]).