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?
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:
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).