www.digitalmars.com         C & C++   DMDScript  

D - Great disappointment!!! (about templates...)

reply Achilleas Margaritis <axilmar b-online.gr> writes:
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;
Apr 19 2004
parent reply =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= writes:
Achilleas Margaritis wrote:
 ...
 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? :-)

You are probably looking for this: class List(T) { <bla bla constructors destructors etc> } List!(int) list = new List!(int);
Apr 19 2004
parent "Achilleas Margaritis" <axilmar in.gr> writes:
Thanks.

"Julio CÚsar Carrascal Urquijo" <adnoctum phreaker.net> wrote in message
news:c61hra$1tpb$1 digitaldaemon.com...
 Achilleas Margaritis wrote:
 ...
 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? :-)

You are probably looking for this: class List(T) { <bla bla constructors destructors etc> } List!(int) list = new List!(int);

Apr 20 2004