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