This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.

1337. Swapped arguments in regex_traits::isctype

Section: 32.6 [re.traits] Status: C++11 Submitter: Howard Hinnant Opened: 2010-06-21 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [re.traits].

View all issues with C++11 status.

Discussion:

32.6 [re.traits]/12 describes regex_traits::isctype in terms of ctype::is(c, m), where c is a charT and m is a ctype_base::mask. Unfortunately 30.4.2.2.2 [locale.ctype.members] specifies this function as ctype::is(m, c)

[ Post-Rapperswil: ]

Moved to Tentatively Ready after 5 positive votes on c++std-lib.

[ Adopted at 2010-11 Batavia ]

Proposed resolution:

Change 32.6 [re.traits] p.12:

bool isctype(charT c, char_class_type f) const;

11 ...

12 Returns: Converts f into a value m of type std::ctype_base::mask in an unspecified manner, and returns true if use_facet<ctype<charT> >(getloc()).is(cm, mc) is true. Otherwise returns true if f bitwise or'ed with the result of calling lookup_classname with an iterator pair that designates the character sequence "w" is not equal to 0 and c == '_', or if f bitwise or'ed with the result of calling lookup_classname with an iterator pair that designates the character sequence "blank" is not equal to 0 and c is one of an implementation-defined subset of the characters for which isspace(c, getloc()) returns true, otherwise returns false.