Skip to content

I do not think [fs.req.namespaces] means what it thinks it means LWG2818 #1793

@jwakely

Description

@jwakely

Unless otherwise specified, references to entities described in this subclause are assumed to be qualified with ::std::filesystem::.

"this subclause" only refers to 30.10.4.1 [fs.req.namespaces], but it really means the whole of 30.10 [filesystems], or at least all the subclauses after 30.4.2.1, not just 30.10.4.1 itself.

Do we really mean all entities? Variables are entities. Class members are entities, and we don't mean to qualify all class members with the namespace name, because e.g. native() means ::std::filesystem::path::native() not ::std::filesystem::native() (which doesn't exist). I think we mean types and non-member functions. And maybe some typedefs, which are not entities.

20.5.1.1 [contents] specifies a similar rule differently, talking about "a name x" not "entities".

We could qualify all uses of types and non-member functions with filesystem:: so that the general rule in [contents] applies, which might hurt readability, or we could fix [fs.req.namespaces].

Metadata

Metadata

Assignees

Labels

lwgIssue must be reviewed by LWG.not-editorialIssue is not deemed editorial; the editorial issue is kept open for tracking.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions