Section: 30.4.2.1 [category.ctype.general] Status: New Submitter: Jiang An Opened: 2024-01-12 Last modified: 2024-01-14 07:56:33 UTC
Priority: Not Prioritized
View all issues with New status.
Discussion:
It may be desired that static data members ctype_base are "real constants", i.e. usable in constant expressions. However, this is not strictly required because mask is only required to be a bitmask type that can be a class type, which makes the plain const potentially insufficient.
Proposed resolution:
This wording is relative to N4971.
Modify 30.4.2.1 [category.ctype.general] as indicated:
namespace std { class ctype_base { public: using mask = see below; // numeric values are for exposition only. static constexpr mask space = 1 << 0; static constexpr mask print = 1 << 1; static constexpr mask cntrl = 1 << 2; static constexpr mask upper = 1 << 3; static constexpr mask lower = 1 << 4; static constexpr mask alpha = 1 << 5; static constexpr mask digit = 1 << 6; static constexpr mask punct = 1 << 7; static constexpr mask xdigit = 1 << 8; static constexpr mask blank = 1 << 9; static constexpr mask alnum = alpha | digit; static constexpr mask graph = alnum | punct; }; }-1- The type mask is a bitmask type (16.3.3.3.3 [bitmask.types]).