Thread overview | |||||
---|---|---|---|---|---|
|
June 26, 2011 delegate type from function signature | ||||
---|---|---|---|---|
| ||||
Is it possible to get the signature of a function and make a delegate type from it? Something like this: bool fun(int i) {} alias (signature of fun) DelegateType; DelegateType _delegate = delegate(int i) { return i == 0; }; |
June 26, 2011 Re: delegate type from function signature | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nub Public | On 26/06/2011 08:08, Nub Public wrote: > Is it possible to get the signature of a function and make a delegate > type from it? > > > Something like this: > > bool fun(int i) {} > > alias (signature of fun) DelegateType; > > DelegateType _delegate = delegate(int i) { return i == 0; }; ---- alias typeof(&fun) FuncType; FuncType _function = function(int i) { return i == 0; }; ---- Note that fun() here has no context, so FuncType is an alias for bool function(int). If you truely want a delegate type, you could use the following: ---- import std.traits; template DelegateType(alias t) { alias ReturnType!t delegate(ParameterTypeTuple!t) DelegateType; } DelegateType!fun _delegate = (int i) { return i == 0; }; ---- The other alternative is to just use auto, there's no guarantee it will be the same type as the function though: ---- auto _delegate = (int i) { return i == 0; } ---- Hope this helps. -- Robert http://octarineparrot.com/ |
June 26, 2011 Re: delegate type from function signature | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | On 6/26/2011 5:45 PM, Robert Clipsham wrote:
> template DelegateType(alias t)
> {
> alias ReturnType!t delegate(ParameterTypeTuple!t) DelegateType;
> }
Thanks. This is exactly what I need.
|
Copyright © 1999-2021 by the D Language Foundation