Difference between C# generics and C++ templates     S.No   C# Generics                          C++ Templates     1      ...
specialization is supported           supported by C++ templates ?     by C# generics ?                       C++ template...
template parameters ?             parameters ?              C# does not allow non-type       C++ allows non-type template ...
Upcoming SlideShare
Loading in …5
×

Difference between c# generics and c++ templates

2,668 views

Published on

Difference between C# generics and C++ templates

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,668
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Difference between c# generics and c++ templates

  1. 1. Difference between C# generics and C++ templates S.No C# Generics C++ Templates 1 Strongly / Loosely typed: Strongly / Loosely typed: C# Generic types are strong C++ Templates are loosely typed. typed. 2 Instantiated at Compile Instantiated at Compile time / time / Runtime: Runtime: C# Generic types are C++ templates are instantiated at instantiated at the runtime. the compile time. 3 Whether it permits the type Whether it permits the type parameters to have default parameters to have default values ? values ? C# Generic types do not permit C++ templates permit the type the type parameters to have parameters to have default values. default values. 4 Whether DLL can be created Whether DLL can be created using C# Generics ? using C++ Templates ? Libraries or DLLs can be C++ templates are always created using C# Generics. expanded at compile time. Therefore, the C++ compiler must have access to all template types— generally through header files— and any types used to create the closed types from the template types at compile time. For this reason alone, it is impossible to package C++ templates into libraries or DLLs. The STL is a perfect example: notice that almost every bit of your favorite STL implementation exists in header files. 5 Whether it is possible to call Whether it is possible to call arithmetic operators in a C# arithmetic operators in a C++ generic class ? template class ? C# generics do not provide the With C++ template class, it is same amount of flexibility as possible to call arithmetic C++ templates. For example, it operators. is not possible to call arithmetic operators in a C# generic class, although it is possible to call user defined operators. 6 Whether explicit Whether explicit specialization is
  2. 2. specialization is supported supported by C++ templates ? by C# generics ? C++ template support explicit C# generics does not support specialization. explicit specialization; that is, a custom implementation of a template for a specific type.7 Whether partial Whether partial specialization is specialization is supported supported by C++ templates ? by C# generics ? C++ template support partial C# generics does not support specialization. partial specialization: a custom implementation for a subset of the type arguments.8 Whether type parameter can Whether type parameter can be be used as the base class used as the base class for the for the generic type ? template type ? C# does not allow the type C++ allows the type parameter to parameter to be used as the be used as the base class for the base class for the generic type. template type.9 Whether generic type Whether template type parameter can itself be a parameter can itself be a generic ? template? In C#, a generic type C++ does allow template parameter cannot itself be a parameters. generic, although constructed types can be used as generics.10 What type of code it allows ? What type of code it allows ? C# requires code in a class to C++ allows code that might not be be written in such a way that it valid for all type parameters in the will work with any type that template, which is then checked for satisfies the constraints.C# the specific type used as the type disallows as allowed in C++ parameter. (Please look at example from For example, in C++ it is possible R.H.S column); the only to write a function that uses the language constructs allowed arithmetic operators + and - on are those that can be deduced objects of the type parameter, from the constraints. which will produce an error at the time of instantiation of the template with a type that does not support these operators.11 Which language supports Which language supports generics? templates ? Generics can be supported by Templates are a C++ only any .NET language that wishes language feature. to do so.12 Whether it allows non- Whether it allows non-template
  3. 3. template parameters ? parameters ? C# does not allow non-type C++ allows non-type template template parameters. parameters.References:http://webdesignpluscode.blogspot.in/2012/07/compare-c-net-generics-and-c-templates.htmlhttp://my.safaribooksonline.com/book/programming/csharp/9781430225379/generics/difference_between_generics_and_c_plus_phttp://stackoverflow.com/questions/63694/creating-a-math-library-using-generics-in-c-sharphttp://msdn.microsoft.com/en-us/library/c6cyy67b%28v=vs.80%29.aspxhttp://www.codeguru.com/csharp/.net/cpp_managed/windowsservices/article.php/c7423/Comparing-NET-Generics-and-C-Templates.htmAnd, further updates on difference between questions and answers, please visit myblog @ http://onlydifferencefaqs.blogspot.in/

×