Funktionszeiger und Template



  • Hallo

    Bei mir will folgender Code nicht funktionieren.

    template<class T>
    void StandardDeleter(T* Pointer);
    
    template<class T>
    struct TestPtr
    {
      explicit inline TestPtr(T* Pointer, void(*Deleter)(T*) = StandardDeleter<T>); //Fehler
    };
    

    Die Definitionen sind irrelevant, da der Fehler im Header auftaucht.
    Der Fehler lautet "E2293 ) erwartet". Wenn ich keinen Defaultwert setze, dann bekomme ich keinen Fehler.

    MfG, EOutOfResources



  • Deine Funktion StandardDeleter hat ja auch als Rückgabetyp ein void, wie sollte sie etwas zurück geben können? 🙄

    Mfg


  • Mod

    Bei mir funktioniert das. Mit allen Warnungen und pedantic. Selbst wenn ich das Template instanziere. Sowohl auf GCC 4.4 als auch auf Intel 11.0. Vielleicht doch noch Fehler an anderer Stelle? Funktioniert wirklich dieser Codeschnipsel nicht? (Porbier das aus und behaupte es nicht nur!) Welcher Compiler?


Anmelden zum Antworten