Resultados estranhos ao usar regexp C++ 11 com gcc 4.8.2 (mas funciona com Boost regexp) [duplicado]

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

Pergunta

Tentei usar a expressão regular do C++ 11, mas falhei mesmo em exemplos triviais.Do lado de fora, parece apenas comparar as strings, por exemplo:

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

Por outro lado, a biblioteca regexp do Boost se comporta como eu esperava:

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

Testei com GCC 4.8.2 e clang 3.4 (também usando a biblioteca STL do GCC).A biblioteca está quebrada ou não entendo a sintaxe definida pelo padrão C++ 11.

Foi útil?

Solução

Não é compatível com GCC 4.8.x.Confira a entrada correspondente do Bugzilla:

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

Especificamente:"Agora o regex está implementado.Deve vir com GCC 4.9 :)"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top