V 7.1 -> templates



  • Hi!

    Bevor ihr mich nun haut: Ich hab es NICHT im MFC gepostet das es mit der MFC nix zu tun hat und nach Standard gehen sollte.

    struct myTest
    {
    template <class T,class U>
    T * Create(const U & arg,T)
    {
        return new T(arg);
    }
    
        template <class U>
        int * Create<int,U>(const U & arg,int)
        {
            return new int(arg);
        }
    };
    

    Beim zweiten Template wollte ich eine Spezialisierung für int schreiben. Der VC 7.1 quittiert das aber mit einer Fehlermeldung. Die Behebung der Fehlermeldung verlangt ein template <> vor der Funktion. Das kann der Compiler aber nicht haben, da U ja weiterhin ein templatepara sein muß.

    Frage: Gibt es einen anderen weg das obrige zu erreichen ?
    Ist das nach Standard überhaupt erlaubt was ich da treibe ?



  • AFAIK funktioniert partielle Spezialisierung nur bei Klassentemplates.



  • Hm, im Buch Modern C++ Design wird das so vorgestellt um ein Überladen einer Methode zu erreichen (jo der ausdruck spezialisierung war wohl falsch O🤡 ).

    Die Crate Methode muß einmal alles schlucken und einmal speziell für ein anderes Objekt angepasst werden.

    [ Dieser Beitrag wurde am 05.07.2003 um 11:52 Uhr von Knuddlbaer editiert. ]

    struct myTest
    {
    template <class T,class U>
    T * Create(const U & arg,T)
    {
        return new T(arg);
    }
    
        template <class U>
        int * Create(const U & arg,int)
        {
            return new int(arg);
        }
    };
    

    War das gesuchte....

    thx @ll

    [ Dieser Beitrag wurde am 05.07.2003 um 15:41 Uhr von Knuddlbaer editiert. ]


Anmelden zum Antworten