2011-01-17 19 views
10

Il seguente codice:C++ 0x regex in GCC

#include <regex> 
using namespace std; 

(snippage) 

regex_search(s, m, re); 

opere in Microsoft C++, ma GCC 4.4.3 fornisce il seguente messaggio di errore:

/usr/include/C++/4.4/tr1_impl/regex: 2255: avvertimento: funzione inline 'bool std :: regex_search (_Bi_iter, _Bi_iter, std :: match_results < _Bi_iter, _Allocator> &, std :: const basic_regex < _Ch_type, _Rx_traits> &, std :: regex_constants :: match_flag_type) [con _Bi_iter = __gnu_cxx :: __ normal_iterator, std :: a llocator>>, _Allocator = std :: allocator, std :: allocator>>>>, _Ch_type = char, _Rx_traits = std :: regex_traits]' usato ma mai definito

Naturalmente non mi sorprenderebbe se la regex fosse semplicemente una delle funzionalità di C++ 0x ancora nella lista delle cose da fare per GCC, ma quello che mi gratifica è, in quel caso, perché prende volentieri la direttiva include, le dichiarazioni delle variabili ecc. e inciampare solo sulla chiamata di funzione (che sembra persino capire).

C'è qualcosa che mi manca?

+0

Stai compilazione con '-std = C++ 0x'? – ismail

+0

Sì. Sembra che il regex sia stato parzialmente implementato fino ad ora. – rwallace

+1

invece è possibile utilizzare . –

risposta

15

La libreria regex non è stata implementata principalmente in libstdC++ fino al ramo 4.8.

Le versioni 4.9 e successive hanno implementato lo standard <regex>.

+0

Ecco un collegamento al progetto C++ 0x che copre tutte le versioni di gcc e i relativi stati di supporto. http://gcc.gnu.org/projects/cxx0x.html – slm

+5

['' è ora implementato a partire da GCC 4.9] (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631#c17) – JohnCand

0

Per g ++, compilare con flag "-std = C++ 0x"

+1

Funzionerà solo con le versioni di gcc che hanno implementato la funzione. Ad esempio stavo cercando di usare std :: basic_regex ma non c'è implementazione dietro questa funzione in gcc 4.4 e 4.5. – slm