On Tue, Jun 28, 2016 at 01:41:03AM +0000, Smoke Adams via Digitalmars-d-learn 
wrote:
> I have a type
> 
> public class SuperFunction(T)
> {
>   T t;
>   return(T) Do() { return t(); }
> }
> 
> where T is a delegate or function. First, I would like to be able to
> specify that this must be the case for SuperFunction so we can't pass
> non-function/delegates for T.

Try:

        class SuperFunction(T)
                if (is(T == function) || is(T == delegate))
        {
                ...
        }


> Second, How to specify the return type of Do to match that of T.

Maybe this?

        import std.traits : ReturnType, Parameters;

        ReturnType!T Do(Parameters!T args) { return t(args); }


T

-- 
INTEL = Only half of "intelligence".

Reply via email to