import std.stdio;
T foo(T)(auto ref const T val)
{
return val;
}
T foo(T, Args...)(auto ref const T val, auto ref const Args u)
{
static if (is(T == string))
return val ~ foo(u);
else
return val + foo(u);
}
void main()
{
writeln(foo("some ", "test")); // prints some test
writeln(foo(2, 2, 1)); // prints 5
}