Oh, well: http://d.puremagic.com/issues/show_bug.cgi?id=4856
Guillaume Guillaume B. wrote: > Hi, > > Is this usage of opDispatch supposed to work: > > ==== > module test.d; > > import std.stdio; > > struct DispatchTest { > void opDispatch(string name, string otherName)() { > writeln(name, ":", otherName); > } > } > > void main() { > DispatchTest t; > //t.testName!("testOtherName")(); > t.opDispatch!("testName", "testOtherName")(); > } > ==== > > This compiles fine but if I remove the commented line, dmd (v2.048) tells > me: > > test.d(13): Error: template instance opDispatch!("testName") does not > match template declaration opDispatch(string name,string otherName) > > The error seems OK for a "normal" function, but for opDispatch, it seems > limiting to me. Is this a bug? > > Here's an other, similar, test: > > ==== > module test.d; > > import std.stdio; > > struct DispatchTest { > void opDispatch(string name, T)(T t) { > writeln(name, ":", T.stringof); > } > } > > void main() { > DispatchTest t; > //t.testName!(DispatchTest)(t); > t.testName(t); > } > ==== > > Which gives, when uncommenting: > > test.d(13): Error: template instance opDispatch!("testName") does not > match template declaration opDispatch(string name,T) > > So bug or not? > > Guillaume