Seltsame Ergebnisse bei der Verwendung von C++11-Regexp mit gcc 4.8.2 (funktioniert aber mit Boost-Regexp) [Duplikat]
Frage
Ich habe versucht, den regulären Ausdruck von C++11 zu verwenden, bin aber selbst bei trivialen Beispielen gescheitert.Von außen betrachtet scheint es nur ein Vergleich der Zeichenfolgen zu sein, zum Beispiel:
std::regex_match(std::string{""}, std::regex{"a?"}) // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true (???)
Im Gegensatz dazu verhält sich die Regexp-Bibliothek von Boost so, wie ich es erwartet hätte:
boost::regex_match(std::string{""}, boost::regex{"a?"}) // true (OK)
boost::regex_match(std::string{"a?"}, boost::regex{"a?"}) // false (OK)
Ich habe mit GCC 4.8.2 und Clang 3.4 getestet (auch unter Verwendung der STL-Bibliothek von GCC).Entweder ist die Bibliothek kaputt oder ich verstehe die im C++11-Standard definierte Syntax nicht.
Lösung
Es wird in GCC 4.8.x nicht unterstützt.Schauen Sie sich den entsprechenden Bugzilla-Eintrag an:
Speziell:„Jetzt ist Regex implementiert.Sollte mit GCC 4.9 kommen :)"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow