How to pass arguments of any type into a function

Hello everyone:

I have a question, How can I pass arguments of any type to a function, for example:

string StringConcatenate_MQL5(void arg1, void arg2, void arg3, void arg4){

string result="";

StringConcatenate(result,arg0,arg1,arg2,arg3,arg4);

return result;

}

call to function:

string Vars = StringConcatenate_MQL5("MACD_TF=",7," Periods=",18);
template<typename T1,typename T2,typename T3,typename T4>
string MyString(T1 var1,T2 var2,T3 var3,T4 var4)
{
   return string(var1)+string(var2)+string(var3)+string(var4);
}

Ok Thanks,

Can you tell me how to assign default values to arguments, for example:

template<typename T1,typename T2,typename T3,typename T4>
string MyString(T1 var1=NULL,T2 var2=NULL,T3 var3=NULL,T4 var4=NULL)
{
   return string(var1)+string(var2)+string(var3)+string(var4);
}


Compilation Error: 'Cannot to apply function template'
template<typename T1>
string String(T1 var1)
{
   return string(var1);
}

template<typename T1,typename T2>
string String(T1 var1,T2 var2)
{
   return String(var1)+String(var2);
}

template<typename T1,typename T2,typename T3>
string String(T1 var1,T2 var2,T3 var3)
{
   return String(var1,var2)+String(var3);
}

...