Risultati strani quando si utilizza regexp C++11 con gcc 4.8.2 (ma funziona con Boost regexp) [duplicato]

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

Domanda

Ho provato a utilizzare l'espressione regolare di C++11 ma ho fallito anche in esempi banali.Dall'esterno sembra che vengano confrontate solo le stringhe, ad esempio:

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

Al contrario, la libreria regexp di Boost si comporta come mi sarei aspettato:

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

Ho provato con GCC 4.8.2 e clang 3.4 (utilizzando anche la libreria STL di GCC).O la libreria è danneggiata oppure non capisco la sintassi definita dallo standard C++11.

È stato utile?

Soluzione

Non è supportato in GCC 4.8.x.Controlla la voce Bugzilla corrispondente:

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

Nello specifico:"Ora l'espressione regolare è implementata.Dovrebbe essere fornito con GCC 4.9 :)"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top