Sean Eskapp Wrote: > > > templates: > > > void foo(T)(T, void delegate(T) fn) > > { > > } > > > This parameterizes foo based on T, which could be A, const A, or int, or > > whatever works to compile the function. > > What if the parameters are more general, for instance the first parameter is > always a Foo, the second is a delegate which takes a Foo.Bar, but they're > always > qualified the same way?
Their is probably better ways to do this... void main() { foo(new Foo, (int) { }); } void foo(T, U)(T t, void delegate(U) fn) if(__traits(compiles, fn(t.bar))) { } class Foo { int bar() { return 0; } }