Unexpected type names with template typedefs

Simen Kjaeraas simen.kjaras at gmail.com
Mon Apr 28 17:24:13 PDT 2008


struct foo(T)
{
	T value;
}

template bar(T)
{
	typedef foo!(T) bar;
}

void main(string[] args)
{
	writefln((bar!(int)).stringof); // prints 'bar'
	writefln((bar!(float)).stringof); // prints 'bar'
	writefln((bar!(bar!(int))).stringof); // prints 'bar'

	writefln((foo!(int)).stringof); // prints 'foo!(int)'
	writefln((foo!(float)).stringof); // prints 'foo!(float)'
	writefln((foo!(foo!(int))).stringof); // prints 'foo!(foo!(int))'
}


Should not the output of the first three be 'bar!(int)', 'bar!(float)',  
and 'bar!(bar!(int))'?

-- Simen


More information about the Digitalmars-d-learn mailing list