Template-Spezialisierung



  • Hallo,

    kann ich ein Template mit einem Template spezialisieren? Ich versuche mal das in etwas Code zu packen:

    template<int Size> class Typ1 {
      //...
    };
    
    template<int Length, class T> class Typ2 {
      //...
    };
    
    template<class T> class X {
      void Function();
    }
    
    // das ist kein Problem ...
    template<>
    X<Typ1<8> >::Function() {
      // ...
    }
    
    // ... aber geht auch sowas irgendwie???
    template<>
    X<Typ1<Size> >::Function() {
    
    }
    
    template<>
    X<Typ2<Length, Typ1<Size> > >::Function() {
    
    }
    

    Ich moechte also eine Spezialisierung fuer jede moegliche Konfiguration von Typ1 oder Typ2 haben ...
    Falls das irgendwie geht, mit welcher Syntax???

    Vielen Dank,
    Locke





  • Klar geht das, du mußt nur die übriggebliebenen Template-Parameter mit angeben:

    template<int Size>
    class X<Typ1<Size> >{
      ...
    };//X-Spzialisierung für alle Typ1
    
    template<int Length,int Size>
    class X<Typ2<Length,Typ1<Size> > >{
      ...
    };//X-Spzialisierung für alle Typ2<...,Typ1>
    

    (Einzelne Memberfunktionen kannst du afaik nicht gesondert spezialisieren, nur die komplette Template-Klasse)


Anmelden zum Antworten