Странные результаты при использовании регулярного выражения C++ 11 с gcc 4.8.2 (но работает с регулярным выражением Boost) [дубликат]
Вопрос
Я пытался использовать регулярное выражение C++11, но это не удалось даже в тривиальных примерах.Со стороны кажется, что сравниваются только строки, например:
std::regex_match(std::string{""}, std::regex{"a?"}) // false (???)
std::regex_match(std::string{"a?"}, std::regex{"a?"}) // true (???)
Напротив, библиотека регулярных выражений Boost ведет себя так, как я и ожидал:
boost::regex_match(std::string{""}, boost::regex{"a?"}) // true (OK)
boost::regex_match(std::string{"a?"}, boost::regex{"a?"}) // false (OK)
Я тестировал GCC 4.8.2 и clang 3.4 (также используя библиотеку STL GCC).Либо библиотека сломана, либо я не понимаю синтаксис, определенный стандартом C++11.
Решение
Он не поддерживается в GCC 4.8.x.Ознакомьтесь с соответствующей записью Bugzilla:
Конкретно:«Теперь регулярное выражение реализовано.Должен идти с GCC 4.9 :)"
Не связан с StackOverflow