"your compiler does not properly handle overloaded template function disambiguation"



  • Hallo Leute,

    ich habe ein paar Modifikationen an einem Programm vorgenommen und will es nun kompilieren. Auf meinem Testsystem mit Fedora Core 4 funktioniert das auch einwandfrei aber auf meiner Debian-Maschine bekomme ich diese Fehlermeldung beim configure-\1:

    ...
    checking for proper overloaded template function disambiguation... no
    configure: error: your compiler does not properly handle overloaded template function disambiguation
    

    Überprüft wurde das:

    AC_DEFUN([TORRENT_OTFD], [
      AC_LANG_PUSH(C++)
      AC_MSG_CHECKING(for proper overloaded template function disambiguation)
    
      AC_COMPILE_IFELSE(
        [[template <typename T> void f(T&) {}
          template <typename T> void f(T*) {}
          int main() { int *i = 0; f(*i); f(i); }
        ]],
        [
          AC_MSG_RESULT(yes)
        ], [
          AC_MSG_RESULT(no)
          AC_MSG_ERROR([your compiler does not properly handle overloaded template function disambiguation])
      ])
    
      AC_LANG_POP(C++)
    ])
    

    Diesen Code kann ich aber ohne Probleme kompilieren o.O

    Ich dachte erst, dass es vielleicht am gcc 3.3 liegt aber auch mit dem 4.0 klappt es nicht.

    Weiß jemand, woran das liegen könnte bzw. was ich machen muss, damit es funtkioniert?



  • Ich würde sagen, das liegt an deinem Compiler - der kann die Template-Funktionen nicht auseinanderhalten.

    (als Lösung würde mir nur einfallen, so ein Konstrukt wie dort im AC_COMPILE_IFELSE-Block steht in der Praxis nicht einzusetzen)



  • Also das ist ja ein fertiges Programm, ich hab es nur modifiziert.
    Ich hab das Problem jetzta ber auch gefunden.
    Im configure-script hat er irgendwas benutzt aber nicht gcc und als ich einfach mal als CXX-flag gcc angegeben hab, ging es 🙂



  • gcc ist aber ein C-Compiler, der C++-Compiler heisst g++ 😉



  • LordJaxom schrieb:

    gcc ist aber ein C-Compiler, der C++-Compiler heisst g++ 😉

    g++ hab ich nicht. Hab nur gcc und cpp installiert und damit geht es auch 🙂



  • Ok, der gcc erkennt (wenn die Dateiendung stimmt) offenbar auch C++ Code und compiliert ihn richtig (als .c-Datei gibts einen Fehler).

    Allerdings kann der gcc hier keine c++-Programme zu einem ausführbaren zusammenlinken. Ausserdem kann es gut sein dass wenn Deiner Distri g++ fehlt, dass dann auch noch einige andere Sachen (c++-Standardbibliothek, Header...) fehlen.



  • Er hatte dann tatsächlich beim Linken probleme o.O
    Nach der Installation von g++ lief das aber auch.

    Danke 🙂


Log in to reply