Was ist "Partial Template Specialization" ????



  • With 98-percent conformance, Visual C++ .NET 2003 is more conformant to ISO C++ standards than any previous version of Visual C++, and it contains new language support for features including Koenig Lookup and Partial Template Specialization.



  • tippe das mal in google (ab seite 3 kommen die erkläreungen)



  • Hallo,
    Partial Template Specialization ist die Möglichkeit alternative Definitionen einer (generischen) Template-Klasse (auch genannt primary oder base template genannt)für eine Familie von Template-Argumenten anzugeben.
    Oder auch: Eine partielle Spezialisierung ist eine Verfeinerung eines Basistemplates für eine eingeschränkte Menge von Parametern. In ihrer Semantik ist eine partielle Spezialisierung ähnlich der Funktionsüberladung. Der selbe Klassenname, aber andere Implementationen.

    Im Gegensatz dazu steht explicit Template Specialization, dass die Möglichkeit bietet ein primary Template für einen festen Satz Typen anzugeben. Hier müssen alle Templateparameter substituiert werden.

    // primary template
    template <class T, class U>
    struct Foo {};
    
    // explizite Spezialisierung für T = int und U = double
    template <>
    struct Foo<int, double> {};
    
    // partielle Spezialisierung a) für T = Pointertyp und U = double
    template <class T>
    struct Foo<T*, double> {};
    
    // partielle Spezialisierung b) für T = Array von int und beliebige U
    template <class T, int n, class U>
    struct Foo<T[n], U>
    {};
    int main()
    {
        Foo<int, double> f;    // explizite Spezialisierung
        Foo<int*, int> f2;     // primary Template
        Foo<int*, double> f3;  // partielle Spezialisierung a)
        Foo<int[5], char> f4;  // partielle Spezialisierung b)
    
    }
    

    Die Zahl der Argumente muss für eine Spezialisierung immer gleich der des Basistemplates sein. Die Zahl der Templateparameter hingegen kann abweichen.


Anmelden zum Antworten