Function Template for Dynamic Parameter

Alex sascha.orlov at gmail.com
Sun Jul 1 11:52:19 UTC 2018


On Sunday, 1 July 2018 at 11:19:50 UTC, vino.B wrote:
>
> Hi Timoses,
>
>   Thank you very much, can you help me on how to rewrite the 
> below using Variadic template
>
> Passing function as a parameter to another function:
>
> void ptFun(T)(T function(string, string, int) coRoutine, 
> Array!string Dirlst, ) {
> alias scRType = typeof(coRoutine(string.init, string.init, 
> int.init));
>
> where the "function(string, string, int) coRoutine" should be a 
> variadic function
>
> From,
> Vino.B

I'm not sure, if get your question right, is this what you are 
looking for?


´´´
import std.stdio;
import std.traits;

void main()
{
	alias instantiation = ptFun!(size_t, fun!string);
	
	instantiation(4);

	alias instantiation2 = ptFun2!(fun!string);

	instantiation2(4);

}

auto fun(T...)(T input)
{
	return size_t(42);
}

void ptFun(T, alias funToCall)(size_t definedParam)
	if(is(T == ReturnType!(funToCall)))
{
	"ptFun called".writeln;
	assert(42 == funToCall("some string"));
}

void ptFun2(alias funToCall)(size_t definedParam)
	if(__traits(isSame, TemplateOf!(funToCall), fun))
{
	"ptFun2 called".writeln;
	assert(42 == funToCall("some string"));
}
´´´



More information about the Digitalmars-d-learn mailing list