Hi folks,

I ran into what I think might be a bug with template specialization not applying when using a mixin template to specialize a function.

Here's an example:

http://pastebin.com/Wp96KHAY

The output I get with dmd v2.061 seems to show that the compiler only chooses a template specialization if a template mixin defines both the most general function as well as the specialized version.

In the example below, I would expect the second instance of Bar.go(T) to be MakeGo.go(T : U).

$ rdmd templateSpecialization.d
Foo.go(T)
Foo.go(T : int)
Bar.go(T)
Bar.go(T : int)
Bar.go(T)
MakeGo2.go(T)
MakeGo2.go(T : U)

I chatted with Andrei, and he suggested this behavior seemed like a bug. Anyway, the workaround is pretty easy (ensure we provide both the general and specialized implementation of the method when using a mixin template), but I wanted to send it to the group to see if I'm missing something.

Reply via email to