In C ++ was bedeutet Vorlage?

7

Es ist keine Syntax, die ich kenne, aber ich habe sie in gesehen eine andere Frage , ein Beispiel dafür ist:

%Vor%

Was bedeutet template<> eigentlich, ohne Vorlagetyp / Parameter?

    
Mr. Boy 02.02.2011, 09:42
quelle

3 Antworten

12

Es ist eine Spezialisierung. template<> bedeutet, dass die Spezialisierung selbst nicht auf Vorlagen basiert, d. h. es handelt sich um eine explizite Spezialisierung, nicht um eine teilweise Spezialisierung.

    
Puppy 02.02.2011, 09:43
quelle
10

Es ist eine Template-Spezialisierung. Der typische Fall wäre eine teilweise Spezialisierung:

%Vor%

Wie Sie sehen, entfernt die Spezialisierung ein Element aus den Vorlagenparametern und gibt explizit einen Typ anstelle des entfernten an. Das heißt, wenn es nur einen Schablonentyp gibt, wird der <> einfach leer:

%Vor%     
Mephane 02.02.2011 10:55
quelle
4

Sie können nur sagen, dass es nur die erforderliche Syntax ist.

Die normale Syntax wäre template< typename T > struct Allowed ;

Weil wir wissen, dass in diesem Fall T std :: string ist, gibt es nichts, was in die eckigen Klammern gesetzt werden kann, aber die Wortvorlage und die spitzen Klammern sind immer noch erforderlich, weil geschrieben wird struct Allowed<std::string> allein würde nicht bedeuten, dass Sie die Vorlage spezialisieren, sondern einfach, dass Sie einen mit std :: string als Typ instanziieren. (Das Wort "struct" ist dazu nicht notwendig, ist aber weiterhin erlaubt).

    
CashCow 02.02.2011 09:48
quelle

Tags und Links