Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strange results when using C++11 regexp with gcc 4.8.2 (but works with Boost regexp) [duplicate]

I tried to use C++11's regular expression but failed even in trivial examples. From the outside, it seems to only compare the strings, for example:

std::regex_match(std::string{""}, std::regex{"a?"})   // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true  (???)

In contrast, the Boost's regexp library behaves as I would have expected:

boost::regex_match(std::string{""}, boost::regex{"a?"})   // true  (OK)
boost::regex_match(std::string{"a?"}, boost::regex{"a?"}) // false (OK)

I tested with GCC 4.8.2 and clang 3.4 (also using GCC's STL library). Either the library is broken, or I do not understand the syntax defined by the C++11 standard.

like image 447
Philipp Claßen Avatar asked Nov 17 '13 04:11

Philipp Claßen


1 Answers

It's not supported in GCC 4.8.x. Check out the corresponding Bugzilla entry:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631

Specifically: "Now regex is implemented. Should come with GCC 4.9 :)"

like image 171
Joe Z Avatar answered Nov 15 '22 19:11

Joe Z