On 2020-08-07 23:03, aberba wrote:
Syntactically they look the same (although D's can do more things) so I'm trying to understand how why in D it's called template but in languages like C#/Java they're generics.


I guess I have fair understanding of D's code generation but isn't it same as what what is available in those languages too? How are the implementation different?

Objective-C recently added support for generics. It uses the same approach as Java, type erasure. Basically the only reason why this was added is to make the Swift APIs better and more type safe.

Swift also has quite an interesting implementation of generics. IIRC correctly it supports both a more Java like implementation where you only get one instantiation and a more D/C++ like implementation where the compiler generates one instantiation per type.

This is supposed to give the best of both worlds. Little binary bloat and high performance.

--
/Jacob Carlborg

Reply via email to