c++ template - "Vorlage <>" vs "Vorlage" ohne Klammern - was ist der Unterschied?




1 Answers

template <> void foo<int>(int& t); deklariert eine Spezialisierung des Templates mit potenziell anderem Körper.

template void foo<int>(int& t); bewirkt eine explizite Instanziierung der Vorlage, führt jedoch keine Spezialisierung ein. Es erzwingt nur die Instanziierung der Vorlage für einen bestimmten Typ.

specialization function

Angenommen, ich habe erklärt:

template <typename T> void foo(T& t);

Worin besteht der Unterschied?

template <> void foo<int>(int& t);

und

template void foo<int>(int& t);

semantisch? Und haben Template-with-No-Brackets und Template-with-Left-Brackets eine andere Semantik in anderen Kontexten?

Verwandt mit: Wie forciere ich, dass eine bestimmte Instanz einer C ++ - Vorlage instanziiert wird?




Related

c++ templates template-specialization