Mögliches Duplikat:
C++ Unterschied der Schlüsselwörter 'typename' und 'class' in Vorlagen
Wenn man eine Funktions- oder Klassenvorlage in C++ definiert, kann man das so schreiben:
template <class T> ...
oder man kann dies schreiben:
template <typename T> ...
Gibt es einen guten Grund, das eine dem anderen vorzuziehen?
Ich habe die populärste (und interessanteste) Antwort akzeptiert, aber die wirkliche Antwort scheint zu lauten: "Nein, es gibt keinen guten Grund, das eine dem anderen vorzuziehen."
- Sie sind gleichwertig (außer wie unten angegeben).
- Manche Menschen haben Gründe, immer die
typename
. - Manche Menschen haben Gründe, immer die
class
. - Manche Menschen haben Gründe, beides zu verwenden.
- Manchen Leuten ist es egal, welche sie benutzen.
Beachten Sie jedoch, dass vor C++17 im Falle von Vorlage Vorlage Parameter, Verwendung von class
代わりに typename
erforderlich war. Siehe Antwort von user1428839 unten. (Aber in diesem speziellen Fall geht es nicht um eine Präferenz, sondern um eine sprachliche Vorgabe).