March 27, 2014 How to Distinguish between a Lambda and a Function Template at Compile Time | ||||
|---|---|---|---|---|
| ||||
Is this a safe way to distinguish between function literals and function literal templates at compile time?
import std.functional;
import std.traits;
template makeFunAlias(alias F)
if (isSomeFunction!(typeof(F)) || is(typeof(F) == void))
{
static if (is(typeof(F) == void))
{
alias makeFunAlias = unaryFun!(F!char);
}
else
{
alias makeFunAlias = unaryFun!F;
}
}
void main()
{
alias test1 = makeFunAlias!((char c) => c);
alias test2 = makeFunAlias!(function(char c) => c);
alias test3 = makeFunAlias!(c => c);
}
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply