[Bug libstdc++/64584] New: basic_regex::assign breaks *this if it throws regex_error
kariya_mitsuru at hotmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Jan 13 17:11:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64584
Bug ID: 64584
Summary: basic_regex::assign breaks *this if it throws
regex_error
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 34436
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34436&action=edit
g++ -v
Please see the following sample.
=============================== sample code ===============================
#include <iostream>
#include <regex>
int main()
{
std::regex re("");
std::cout << re.flags() << std::endl;
try {
re.assign("(", std::regex_constants::icase);
} catch (const std::regex_error& e) {
std::cout << e.code() << std::endl;
}
std::cout << re.flags() << std::endl;
}
===========================================================================
================================= output ==================================
16
5
1
===========================================================================
cf. http://melpon.org/wandbox/permlink/tqxSS6MImnpsCGUf
The C++11 standard 28.8.3[re.regex.assign]/p.15 says, "If an exception is
thrown, *this is unchanged."
So I think that the output should be
================================= output ==================================
16
5
16
===========================================================================
More information about the Gcc-bugs
mailing list