Klassentemplates

Überladen von Klassentemplates und Spezialisierungen (2/2)

Ebenso wenig ist es erlaubt, daß nichtparametrisierte Klassen und parametrisierte Klassen denselben Namen tragen:

 
  class X                 // Das ist verboten! Es existiert schon ein Template  
  {  
    public:  
      char ch;  
      int operator==(X);  
  };  

Erlaubt ist hingegen Spezialisierungen für spezielle Typen zu schreiben:

 
  class X  
  {  
    public:  
      char ch;  
      int operator==(X);  
  };  

Diese Spezialisierung verhindert dann nach den auch für Klassentemplates anzuwendenen Auflösungsstrategien einer Generierung aus dem Template.