This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.
std::filesystem
enum classes are now underspecifiedSection: 31.12.8.2 [fs.enum.file.type], 31.12.8.3 [fs.enum.copy.opts], 31.12.8.6 [fs.enum.dir.opts] Status: C++20 Submitter: Tim Song Opened: 2016-12-18 Last modified: 2021-06-06
Priority: 2
View all other issues in [fs.enum.file.type].
View all issues with C++20 status.
Discussion:
LWG 2678(i) stripped the numerical values of the enumerators from three enum classes in 31.12.8 [fs.enum];
in doing so it also removed the implicit specification 1) of the bitmask elements for the two bitmask types (copy_options
and directory_options
) and 2) that the file_type
constants are distinct.
[2017-01-27 Telecon]
Priority 2; Jonathan to work with Tim to tweak wording.
[2018-01-16, Jonathan comments]
I no longer remember what I didn't like about Tim's P/R so I think we should accept the original P/R.
[2018-1-26 issues processing telecon]
Status to 'Tentatively Ready'
[2018-3-17 Adopted in Jacksonville]
Proposed resolution:
This wording is relative to N4713.
Edit [fs.enum.file_type]/1 as indicated:
This enum class specifies constants used to identify file types, with the meanings listed in Table 123. The values of the constants are distinct.
Edit 31.12.8.3 [fs.enum.copy.opts]/1 as indicated:
The
enum class
typecopy_options
is a bitmask type (16.3.3.3.3 [bitmask.types]) that specifies bitmask constants used to control the semantics of copy operations. The constants are specified in option groups with the meanings listed in Table 124. The constantnone
represents the empty bitmask, andConstantis shown in each option group for purposes of exposition; implementations shall provide only a single definition. Every other constant in the table represents a distinct bitmask element. Calling a library function with more than a single constant for an option group results in undefined behavior.none
Edit 31.12.8.6 [fs.enum.dir.opts]/1 as indicated:
The
enum class
typedirectory_options
is a bitmask type (16.3.3.3.3 [bitmask.types]) that specifies bitmask constants used to identify directory traversal options, with the meanings listed in Table 127. The constantnone
represents the empty bitmask; every other constant in the table represents a distinct bitmask element.