Description
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].