Template-Dummy Parameter (MSVC)



  • Hi! Bei welcher Art von Template-Funktionen/Methoden brauch ich diesen Template-Dummy Parameter bei Visual C++ ?
    Trifft das auf alles zu was mit Templates zu tun hat oder nur auf spezielle Template Techniken? Bitte nicht ins Visual C++ Forum verschieben, da haben die nämlich nicht soviel Ahnung von C++. 😃 😃



  • diesen Template-Dummy Parameter

    Welchen?

    Dummy-Parameter braucht man beim MSVC 6.0 z.B. überall da, wo explicit template argument specification eingesetzt werden soll.

    Aber was genau willst du eigentlich wissen?



  • ja, ich weiß jetzt nicht mehr genau aber ich hatte mal so ein beispiel gesehen

    template<class T> void test(T t, T* = NULL) {
    }

    weiß nicht ob das so richtig ist. auf jedenfall mußte so ein dummy dareingebraucht werden, damit das template richtig instanziiert wird. 🙄
    weiß du was ich meine? 🙄 🙂



  • weiß du was ich meine?

    Denke schon.

    ja, ich weiß jetzt nicht mehr genau aber ich hatte mal so ein beispiel gesehen
    template<class T> void test(T t, T* = NULL) {
    }

    weiß nicht ob das so richtig ist

    Kaum. Hier ist der Dummy-Parameter überflüssig, da T in der Parameterliste von test auftaucht und der Typ somit bei einem Aufruf implizit hergeleitet werden kann.

    Dummy-Parameter brauchst du nur für Typen, die nicht in der Parameterliste auftauchen:

    template <class T>
    void Func()
    {
        cout << typeid(T).name() << endl;
    }
    
    int main()
    {
        Func<int>();
        Func<double>();
        Func<char>();
    }
    

    Hier wird beim MSVC 6.0 fälschlicherweise dreimal "char" ausgegeben.

    Ein Dummy-Parameter hilft:

    template <class T>
    void Func(T* = 0)
    {
        cout << typeid(T).name() << endl;
    }
    
    int main()
    {
        Func<int>();
        Func<double>();
        Func<char>();
    }
    

Anmelden zum Antworten