https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118105
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Why does the _BracketMatcher::_M_add_equivalence_class function use
lookup_collatename?
void
_M_add_equivalence_class(const _StringT& __s)
{
auto __st = _M_traits.lookup_collatename(__s.data(),
__s.data() + __s.size());
if (__st.empty())
__throw_regex_error(regex_constants::error_collate,
"Invalid equivalence class.");
__st = _M_traits.transform_primary(__st.data(),
__st.data() + __st.size());
_M_equiv_set.push_back(__st);
_GLIBCXX_DEBUG_ONLY(_M_is_ready = false);
}
Is this a copy&paste error from _M_add_collate_element ?
I would expect it to be:
void
_M_add_equivalence_class(const _StringT& __s)
{
auto __st = _M_traits.transform_primary(__s.data(),
__s.data() + __s.size());
if (__st.empty())
__throw_regex_error(regex_constants::error_collate, // ???
"Invalid equivalence class.");
_M_equiv_set.push_back(__st);
_GLIBCXX_DEBUG_ONLY(_M_is_ready = false);
}