temlate引数におけるclassと、typenameの違い

特に違いはない。どう使い分けるかは、個人の自由。
歴史的には、たしか最初にclassができて、その後、紛らわしいからtypenameができたという話が『C++の設計と進化』に書いてあった気がする。

『Modern C++ Design』では、intのようなプリミティブな型になるものをtypenameで、その他のものをclassで指定するように使い分けていた。