Rahul wrote:
> Hi Everyone,
> we use the following in the template declaration,
> template <class T>
> template<typename T>
> Is it that typename is preferred as it can be used for all types,
> where as class can only be used for custom class types?
> Thanks in advance!!!
Both keywords have the same effect here, so it's just a coding style issue.
IIRC, according to "C++ Template: The complete Guide":
when the template parameter is not always a "class type"(including
/class/ /struct/, /union/), in this case, use /typename/:
e.g.
template <typename T>
class A { T t; };
class B {};
A<B> a1;
A<int> a2; // int is not a class type
In the case when the template parameter should be a "class type", use
/class/,
Additionally, when the template argument is of template template
argument, only /class/ can be used.
e.g.
template <template <typename> class TT>
^^^^^
class A;
HTH
--
Thanks
Barry