Templates array detection

Cube sq at ua.re
Wed Dec 12 06:49:56 PST 2012


Better example code for my other problem. How can I make the 3rd 
foo work on  Datas?

--
struct Data(T)
{
	T elem;
}

void main()
{
	foo(1);
	foo([1,1]);

	auto tmp1 = new Data!(int);
	tmp1.elem = 3;
	foo(tmp1);

	auto tmp2 = new Data!(string);
	tmp2.elem = "hello";
	foo(tmp2);
}

void foo(T)(T t) if(!isArray!T)
{
	writeln(t + 1);
}

void foo(T)(T t) if(isArray!T)
{
	for(int i = 0; i < t.length; i++)
		writeln(t[i]);
}

void foo(T)(T t) if(is(T == Data)) // ?
{
	if(is(T == Data!int))
		writeln(t.elem + 1);
	else if(is(T == Data!string))
		writeln(t.elem);
}
--


More information about the Digitalmars-d-learn mailing list