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.