Resultados extraños al usar expresiones regulares de C++ 11 con gcc 4.8.2 (pero funciona con expresiones regulares de Boost) [duplicado]

StackOverflow https://stackoverflow.com//questions/20027305

Pregunta

Intenté utilizar la expresión regular de C++ 11 pero fallé incluso en ejemplos triviales.Desde fuera, parece que sólo se comparan las cadenas, por ejemplo:

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

Por el contrario, la biblioteca de expresiones regulares de Boost se comporta como esperaba:

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

Probé con GCC 4.8.2 y clang 3.4 (también usando la biblioteca STL de GCC).O la biblioteca no funciona o no entiendo la sintaxis definida por el estándar C++11.

¿Fue útil?

Solución

No es compatible con GCC 4.8.x.Consulte la entrada correspondiente de Bugzilla:

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

Específicamente:"Ahora se implementa la expresión regular.Debería venir con GCC 4.9 :)"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top