https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64585
Bug ID: 64585 Summary: The basic_regex object should not match any character sequence after a call to basic_regex::imbue Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: kariya_mitsuru at hotmail dot com Created attachment 34437 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34437&action=edit g++ -v Please see the following sample. =============================== sample code =============================== #include <iostream> #include <regex> int main() { static const char s[] = ""; std::regex re(""); std::cout << std::boolalpha << std::regex_search(s, re) << std::endl; auto loc = re.imbue(re.getloc()); std::cout << std::boolalpha << std::regex_search(s, re) << std::endl; } =========================================================================== ================================= output ================================== true true =========================================================================== cf. http://melpon.org/wandbox/permlink/0wKMiCY8uNEhOecE The C++11 standard 28.8.5[re.regex.locale]/p.1 says, "After a call to imbue the basic_regex object does not match any character sequence." So I think that the output should be ================================= output ================================== true false ===========================================================================