GCC 4.3 will meinem code nichtmehr



  • hallo, ich wollte gerade mal probieren, ob der neue gcc-4.3 meinen code noch schluckt, und er tut es nicht 😞

    gcc-4.2.3 nimmt das noch an, der icc muckt auch in keiner version,
    deshlab wollte ich fragen, ob ich da nun totalen mist geschrieben habe, oder
    ob die 4.3er version dort noch eine baustelle aufweisst :

    es geht um das suchen eines strings, in einem vector von strings :

    code :

    bool DataSet::hasUnknownPhonems(const std::vector<std::string>& known_phonems) const
    {
    typedef std::vector<std::pair<FLOAT_TYPE, std::string> >::const_iterator entry_it;
    for(entry_it it = m_phonem_map.begin(); it != m_phonem_map.end(); it++)
      {
      // look if this phonem is in the known-list
      std::vector<std::string>::const_iterator found = std::find(known_phonems.begin(), known_phonems.end(), it->second); 
      // not found so it contains unknown phonems
      if(found == known_phonems.end()) return true;
      }
    return false;
    }
    

    mal davon abgesehen, das das nicht besonders schön ist, hat es bisher funktioniert, nun ist aber find nichtmehr definiert (für die parameter-combination)

    fehler :
    error: no matching function for call to
    'find(__gnu_cxx::__normal_iterator<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::basic_string<char, std::char_traits<char>,
    std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, __gnu_cxx::__normal_iterator<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >
    , std::vector<std::basic_string<char, std::char_traits<char>,
    std::allocator<char> >,std::allocator<std::basic_string<char,
    std::char_traits<char>, std::allocator<char> > > > >, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'

    wäre nett wenn mal jemand raufschauen könnte, das ganze tritt im projekt ca 10 mal auf 😞
    ich weiss wie man es wegmachen könnte, aber irgendwie ist mir das zuviel arbeit, jedenfalls wenn es ein bug im gcc ist



  • Hast du den richtigen Header eingebunden? Die neue libstdc++ hat wohl einige Header dependencies eleminiert.

    Ansonsten: Zeigt der dir vielleicht andere Kandidaten an? (candidates are ...)



  • Den Header <algorithm> hast du includiert?



  • ok, ich depp Oo

    hatte <algorithm> nicht drin.
    Deshalb gabs auch keine vorschläge ...

    Danke euch

    manchmal sieht man die einfachen lösungen nicht 🙂


Anmelden zum Antworten