2009-10-26 10 views
9

me sale un error de vinculador con el siguiente código:std :: regex - ¿hay alguna lib que deba vincularse?

#include <regex> 

int main() 
{ 
    std::regex rgx("ello"); 
    return 0; 
} 

test.o: In function `basic_regex': 
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/tr1_impl/regex:769: undefined reference to `std::basic_regex<char, std::regex_traits<char> >::_M_compile()' 
collect2: ld returned 1 exit status 
+0

http://www.johndcook.com/cpp_regex.html#headernamespace –

+0

Encontré que std :: tr1 no existe en mi compilador. – Scott

+0

Mi versión es: gcc versión 4.4.1 20090725 (Red Hat 4.4.1-2) (GCC) – Scott

Respuesta

7

De gcc-4.4.1/include/c++/4.4.1/tr1_impl/regex

template <...> 
class basic_regexp { 
... 
    private: 
     /** 
     * @brief Compiles a regular expression pattern into a NFA. 
     * @todo Implement this function. 
     */ 
     void _M_compile(); 

supongo que aún no está listo.

ACTUALIZACIÓN: current bleeding edge GCC (SVN @ 153546) no parece tener la implementación todavía.

+0

Oh wow. :) Es extraño que haya ejemplos flotando. – Scott

+0

Bueno, supongo que tampoco estoy usando el gcc de borde sangrado. – Scott

+9

¡Debo decir que es muy sádico hacer esto con los desarrolladores! Por lo menos, uno debe imprimir una advertencia en tiempo de compilación diciendo que no está implementado, para evitar que los desarrolladores pierdan tanto tiempo pensando que están haciendo algo mal. – krico

Cuestiones relacionadas