Hi!

I want to create a delegate out of a method that happens to be an eponymous (nested) template, like this:

```
class C {
        void foo() {}
        void bar(string S)() { }
        template baz(string S) {
                void baz()() {
                }
        }
}

void main() {
        C c = new C();
        void delegate() aFoo = &c.foo;
        void delegate() aBar = &c.bar!"a";
        void delegate() aBaz = &c.baz!"a"; // This doesn't compile.
}
```

If I try &c.baz!"a".baz it doesn't work either (I get a different error message.

Do you know if this works (and if so, what should I do), or if it's supposed to?

Of course in this case I don't need to use an eponymous template at all, bit it's just a simplification to try to get everything else out of the way...

In case anyone is interested, the real case is something more like this:

```
class C {
        template baz(args...) if (someCondition!args) {
                void baz(this T) {
                }
        }
}
```

As far as I know, that's the only way to combine a "this" template parameter with variadic template parameters.

As usual, thanks for the great support, D hast got a great community!

P.S.: When the function inside the eponymous template is not templated itself, then it does work:

´´´
class C {
        template baz(string S) {
                void baz() {
                }
        }
}

void main() {
        C c = new C();
        auto aBaZ = &c.baz!"a";
}
´´´

Reply via email to