Risultati strani quando si utilizza regexp C++11 con gcc 4.8.2 (ma funziona con Boost regexp) [duplicato]
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.
Soluzione
Non è supportato in GCC 4.8.x.Controlla la voce Bugzilla corrispondente:
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