Resultados extraños al usar expresiones regulares de C++ 11 con gcc 4.8.2 (pero funciona con expresiones regulares de Boost) [duplicado]
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.
Solución
No es compatible con GCC 4.8.x.Consulte la entrada correspondiente de Bugzilla:
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