Index: include/regex =================================================================== --- include/regex +++ include/regex @@ -1192,7 +1192,8 @@ // lookup_classname -ctype_base::mask _LIBCPP_FUNC_VIS __get_classname(const char* __s, bool __icase); +regex_traits::char_class_type _LIBCPP_FUNC_VIS +__get_classname(const char* __s, bool __icase); template template @@ -2184,8 +2185,8 @@ vector > __ranges_; vector > __digraphs_; vector __equivalences_; - ctype_base::mask __mask_; - ctype_base::mask __neg_mask_; + typename regex_traits<_CharT>::char_class_type __mask_; + typename regex_traits<_CharT>::char_class_type __neg_mask_; bool __negate_; bool __icase_; bool __collate_; @@ -2281,10 +2282,10 @@ void __add_equivalence(const string_type& __s) {__equivalences_.push_back(__s);} _LIBCPP_INLINE_VISIBILITY - void __add_class(ctype_base::mask __mask) + void __add_class(typename regex_traits<_CharT>::char_class_type __mask) {__mask_ |= __mask;} _LIBCPP_INLINE_VISIBILITY - void __add_neg_class(ctype_base::mask __mask) + void __add_neg_class(typename regex_traits<_CharT>::char_class_type __mask) {__neg_mask_ |= __mask;} }; Index: src/regex.cpp =================================================================== --- src/regex.cpp +++ src/regex.cpp @@ -207,7 +207,7 @@ struct classnames { const char* elem_; - ctype_base::mask mask_; + regex_traits::char_class_type mask_; }; #if defined(__clang__) @@ -254,12 +254,12 @@ return r; } -ctype_base::mask +regex_traits::char_class_type __get_classname(const char* s, bool __icase) { const classnames* i = _VSTD::lower_bound(begin(ClassNames), end(ClassNames), s, use_strcmp()); - ctype_base::mask r = 0; + regex_traits::char_class_type r = 0; if (i != end(ClassNames) && strcmp(s, i->elem_) == 0) { r = i->mask_; Index: test/re/re.traits/lookup_classname.pass.cpp =================================================================== --- test/re/re.traits/lookup_classname.pass.cpp +++ test/re/re.traits/lookup_classname.pass.cpp @@ -22,7 +22,9 @@ template void -test(const char_type* A, std::ctype_base::mask expected, bool icase = false) +test(const char_type* A, + typename std::regex_traits::char_class_type expected, + bool icase = false) { std::regex_traits t; typedef forward_iterator F;