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 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;