Gcc4.8.2でC++11regexpを使用すると奇妙な結果が得られます(ただし、Boost regexpで動作します)[重複]
質問
私は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エントリをチェックしてください:
具体的には:"今、正規表現が実装されています。GCC4.9に付属する必要があります:)"
所属していません StackOverflow