Implemented as C macro, templates have several issues, among them are the following.
1. Everyone has been through confusing messages from linker.
2. There is no way to specify the properties of the type to be used for instantiating a template parameter.
Z++ templates solves all C++ template issues.1.
Linkage. The definition of a template class/task can be in a header file, while its implementation in a Source file.
That means, one can include the header file in several source files that use the template. The template can be instantiated multiple times, with different types, without getting
linker error messages.
2.
Parameter specification.
A template parameter can be specified to accept only types with certain characteristics. For instance, the type must have certain methods.
3.
Instantiating argument.
A template parameter can only be instantiated with a previously defined type.
The purpose of a template is to define an abstract type. It makes no sense to instantiate a template with, say 5, as is allowed in C++.
C++ is just a subset of Z++. Z++ is
platform-independent and
component-oriented.