template Dptr( T, U...) {
        alias T delegate( U args) Dptr;
}

Dptr!(T,U) muddle( T, U...)( Dptr!(T,U) f) {
        return f; //or make another delegate in real code
}


unittest {
        import std.stdio;
        int x = 3;
        int scale( int s) { return x * s; }
        Dptr!(int,int) f = muddle( &scale);
        writeln( f(7));
}
============================================

The above technique seemed natural to me, but I get this message from dmd:

p1.d(15): Error: template p1.muddle does not match any function template declaration. Candidates are:
p1.d(7):        p1.muddle(T, U...)(Dptr!(T, U) f)
p1.d(15): Error: template p1.muddle(T, U...)(Dptr!(T, U) f) cannot deduce template function from argument types !()(int delegate(int))

and if I use muddle!(int,int) instead it doesn't help. This is likely a misunderstanding on my part --- please show me how to sort this out.

Reply via email to