January 03, 2004
New template syntax suger is very sweet! I take a liking for it. And I found some template bugs.

1. when both '!' and 'instance' use , compiler will crash.

eg.
instance foo!(int) f;

2. '!' is not equivalent 'instance' key word.

A)
eg.
template foo(T) {}
alias foo!(int) foo;   // not ok
instance.foo(int) foo; // ok

maybe it is a good change , but error message is too complicated
like this:
: instance foo(int) foo is not a template declaration

There is no line number and no file name where the error occurs.

B)
eg.
template Bar(T) {
void put() {}
}

Bar!(char[]) bar;    		// not ok
//	error: instance Bar(char[]) is used as a type

instance Bar(char[]) bar;	// ok

bar.put();

Of course , it is also written by using '!' as :
alias Bar!(char[]) bar;

However the former is much better , I think.

3.illegal typeof craches the compiler.

eg.
template Bar(T) { T t; }
typeof(Bar!(int)) bar; // illegal syntax
typeof(Bar!(int).t) bar; // ok

compiler will crash.

yaneurao.