関数テンプレートまたはクラス テンプレートを C++ で定義する場合、次のように記述できます。
template <class T> ...
またはこれを書くことができます:
template <typename T> ...
どちらかを優先する正当な理由はありますか?
私は最も人気のある (そして興味深い) 回答を受け入れましたが、本当の回答は「いいえ、どちらかを優先する正当な理由はありません」のようです。
- これらは同等です (下記を除く)。
- を常に使用する理由がある人もいます
typename
。 - を常に使用する理由がある人もいます
class
。 - 両方を使用する理由がある人もいます。
- どちらを使うか気にしない人もいます。
ただし、テンプレート テンプレートパラメーターの場合、C++17 より前では、class
代わりに を使用するtypename
必要があったことに注意してください。以下のuser1428839の回答を参照してください。(しかし、この特定のケースは好みの問題ではなく、言語の要件でした。)