Thread overview
Great disappointment!!! (about templates...)
April 19, 2004
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;
April 19, 2004
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);
April 20, 2004
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);