Résultats étranges lors de l'utilisation de l'expression rationnelle C++ 11 avec gcc 4.8.2 (mais fonctionne avec l'expression rationnelle Boost) [dupliquer]

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

Question

J'ai essayé d'utiliser l'expression régulière de C++11 mais j'ai échoué même dans des exemples triviaux.De l'extérieur, il semble que l'on compare uniquement les chaînes, par exemple :

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

En revanche, la bibliothèque d'expressions rationnelles de Boost se comporte comme je m'y attendais :

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

J'ai testé avec GCC 4.8.2 et clang 3.4 (en utilisant également la bibliothèque STL de GCC).Soit la bibliothèque est cassée, soit je ne comprends pas la syntaxe définie par le standard C++11.

Était-ce utile?

La solution

Ce n'est pas pris en charge dans GCC 4.8.x.Consultez l'entrée Bugzilla correspondante :

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

Spécifiquement:"Maintenant, l'expression régulière est implémentée.Devrait venir avec GCC 4.9 :)"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top