Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Templates in c++,typename and class

Tags:

c++

templates

What is the difference between writing a template in c++ in the below both ways

template<typename T> & template<class T>

and when do we prefer them above each other? If both are same,then why do we have them both if one is enough?

like image 504
Vijay Avatar asked Apr 25 '11 09:04

Vijay


2 Answers

No difference at all. I prefer first one (mostly), but that is my personal taste. The language doesn't make any difference between them.

For template parameters, the keywords typename and class are equivalent. §14.1.2 says:

There is no semantic difference between class and typename in a template-parameter.


If both are same,then why do we have them both if one is enough?

Stan Lippman explains this in his article:

Why C++ Supports both Class and Typename for Type Parameters?

like image 55
Nawaz Avatar answered Nov 05 '22 03:11

Nawaz


These keywords are there because of historical reason. There's no difference between them. Read this: http://blogs.msdn.com/b/slippman/archive/2004/08/11/212768.aspx

like image 37
Kien Truong Avatar answered Nov 05 '22 03:11

Kien Truong