Seltsame Ergebnisse bei der Verwendung von C++11-Regexp mit gcc 4.8.2 (funktioniert aber mit Boost-Regexp) [Duplikat]

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

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.

War es hilfreich?

Lösung

Es wird in GCC 4.8.x nicht unterstützt.Schauen Sie sich den entsprechenden Bugzilla-Eintrag an:

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

Speziell:„Jetzt ist Regex implementiert.Sollte mit GCC 4.9 kommen :)"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top