On Monday, 11 November 2013 at 03:52:16 UTC, Timothee Cour wrote:
The code snippet below doesn't work. Is there a way to make it
work?
import std.stdio;
void main(){
writelnIfNonVoid(writeln("ok"));
}
void writelnIfNonVoid(T...)(T a){
static if(T.length)
writeln(a);
}
Considering "cannot have parameters of type void" error, I doubt
it. Using lambda can do as workaround though (returning void is
legal):
import std.stdio;
import std.traits;
void main()
{
writelnIfNonVoid(() { writeln("ok"); });
}
void writelnIfNonVoid(T)(T f)
if (isSomeFunction!T)
{
static if (!is(ReturnType!T == void))
writeln(a);
}