Void parameter type for generic code?
Phil Deets
pjdeets2 at gmail.com
Wed Dec 23 13:36:44 PST 2009
I have a function which stores the return value from a D function for
access by Lua. It looks like this:
int StoreReturn(T)(lua_State* L, T ret)
{
static if (is(T==bool))
{
lua_pushboolean(L, ret?1:0);
return 1;
}
else static if (__traits(isIntegral, T))
{
lua_pushnumber(L, cast(double)ret);
return 1;
}
// etc.
else
{
// unsupported return type
static assert(0);
}
}
I would like to call it with a function like this:
int CallFunction(R, U...)(lua_State* L, R function(U) func)
{
U args;
foreach (i, arg; args)
arg = ExtractParameter!(U[i],i+1)(L);
return StoreReturn(L, func(args));
}
This works unless func returns void. I have a static if condition that
detects and handles the case where R is void, but it would be nice if I
could extend StoreReturn to include:
else static if (is(T==void))
{
return 0;
}
This doesn't work though because parameter types can't be void.
Would it be a good idea to allow void as a valid parameter type for
generic code?
Related link:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94226
Phil Deets
More information about the Digitalmars-d
mailing list