Title
std::filesystem enum classes are now underspecified
Status
c++20
Section
[fs.enum.file.type][fs.enum.copy.opts][fs.enum.dir.opts]
Submitter
Tim Song

Created on 2016-12-18.00:00:00 last changed 38 months ago

Messages

Date: 2018-03-18.16:03:30

Proposed resolution:

This wording is relative to N4713.

  1. 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.

  2. Edit [fs.enum.copy.opts]/1 as indicated:

    The enum class type copy_options is a bitmask type ([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 constant none represents the empty bitmask, and Constant none is 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.

  3. Edit [fs.enum.dir.opts]/1 as indicated:

    The enum class type directory_options is a bitmask type ([bitmask.types]) that specifies bitmask constants used to identify directory traversal options, with the meanings listed in Table 127. The constant none represents the empty bitmask; every other constant in the table represents a distinct bitmask element.

Date: 2018-03-17.00:00:00

[ 2018-3-17 Adopted in Jacksonville ]

Date: 2018-01-26.00:00:00

[ 2018-1-26 issues processing telecon ]

Status to 'Tentatively Ready'

Date: 2018-01-15.00:00:00

[ 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.

Date: 2017-01-27.00:00:00

[ 2017-01-27 Telecon ]

Priority 2; Jonathan to work with Tim to tweak wording.

Date: 2016-12-18.00:00:00

LWG 2678 stripped the numerical values of the enumerators from three enum classes in [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.

History
Date User Action Args
2021-02-25 10:48:01adminsetstatus: wp -> c++20
2018-03-18 16:03:30adminsetmessages: + msg9728
2018-03-18 16:03:30adminsetstatus: voting -> wp
2018-02-12 01:13:49adminsetstatus: ready -> voting
2018-01-28 19:43:07adminsetmessages: + msg9652
2018-01-28 19:43:07adminsetstatus: new -> ready
2018-01-20 15:51:03adminsetmessages: + msg9614
2017-01-30 15:36:02adminsetmessages: + msg8827
2017-01-23 20:24:44adminsetmessages: + msg8783
2016-12-18 00:00:00admincreate