Skip to content

Missing C++11's std::ctype_base::blank in cpp_regex_traits.hpp #19

@blazej-czapp

Description

@blazej-czapp

cpp_regex_traits.hpp introduces its own locale ctype masks on top of the standard ones (starting here). It relies on first combining all standard flags (here) and then finding some unused bits for its own masks.

The block of masks being or'd is missing std::ctype_base::blank, which was introduced in C++11.

As a side note, it all happens to work fine in libc++ because:

 00000110 11111111  all_ctype_masks
 00000001 00000000  ctype_base::blank

 10000000 00000000  non_std_ctype_underscore
 01000000 00000000  non_std_ctype_blank
 00100000 00000000  non_std_ctype_newline

i.e. the mask for blank isn't conflicting with the non_std ones, but that's, of course, sheer luck.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions