I saw code in the standard library where the template was declared but the typename was not specified.
https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/cpp__type__traits_8h-source.html
00211 template<>
00212 struct __is_integer<int>
00213 {
00214 enum { __value = 1 };
00215 typedef __true_type __type;
00216 };
A name used in a template declaration or definition and that is dependent on a template-parameter is assumed not to name a type unless the applicable name lookup finds a type name or the name is qualified by the keyword typename.
source: Where and why do I have to put the "template" and "typename" keywords?
If this is the following, what is the use of this code? Why did they put in a template<> that you don't use?