| |
| Posted by Achilleas Margaritis | PermalinkReply |
|
Achilleas Margaritis
| Dear fellow D programmers,
Today I downloaded the D compiler and linker and the DIDE environment. After playing a little with the example programs and the compiler/DIDE, I decided to build my own D framework. I started from collections...from a linked list specifically.
I went on and wrote my first template class:
public template List(T) {
<bla bla constructors destructors etc>
}
...only to find out that D has no template classes!!!
WHAT A GREAT DISAPPOINMENT!!! am I doing something wrong? :-)
A template declaration is not a class, it is just a namespace for including other declarations inside it.
What I should have done is:
public template List(T) {
class List {
<bla bla list>
}
}
But, in my humble opinion, I think it is not good. When I want to instantiate a template list class, i have to do the following:
List!(int).List* myList = new List!(int).List;
I consider this way of declaring templates a flaw. Please correct me If I'm wrong. D was supposed to improve on C++, and indeed it does in many areas, but why templates have to be so awkward ? Templates and generic programming is something very important. What was wrong with the way C++ does it ? D's way is strange, not as readable as C++, it makes the programmer type a lot of things.
Please, put template classes in D. I would like to write:
List(int)* list = new List(int);
and
alias List(int) IntList;
|