Gcc4.8.2でC++11regexpを使用すると奇妙な結果が得られます(ただし、Boost regexpで動作します)[重複]

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

質問

私はC++11の正規表現を使用しようとしましたが、些細な例でも失敗しました。外部から見ると、たとえば文字列を比較するだけのようです:

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

対照的に、Boostのregexpライブラリは私が期待していたように動作します:

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

私はGCC4.8.2とclang3.4でテストしました(GCCのSTLライブラリも使用しています)。ライブラリが壊れているか、C++11標準で定義されている構文がわかりません。

役に立ちましたか?

解決

GCC4.8ではサポートされていません。x.対応するBugzillaエントリをチェックしてください:

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

具体的には:"今、正規表現が実装されています。GCC4.9に付属する必要があります:)"

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top