2009-10-26 4 views
9

je reçois une erreur de liaison avec le code suivant:std :: regex - Y a-t-il une lib qui doit être liée?

#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

J'ai trouvé que std :: tr1 n'existe pas sur mon compilateur. – Scott

+0

Ma version est: gcc version 4.4.1 20090725 (Red Hat 4.4.1-2) (GCC) – Scott

Répondre

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(); 

Je suppose que ce n'est pas encore prêt.

MISE À JOUR: l'arête de purge courante GCC (SVN @ 153546) ne semble pas encore avoir l'implémentation.

+0

Oh wow. :) Étrange qu'il existe des exemples qui flottent. – Scott

+0

Eh bien, je suppose que je n'utilise pas non plus le gcc. – Scott

+9

Je dois dire que c'est très sadique de faire ça aux développeurs! On devrait au moins imprimer un avertissement au moment de la compilation disant qu'il n'est pas implémenté, pour éviter que les développeurs perdent trop de temps à penser qu'ils font quelque chose de mal. – krico

Questions connexes