On Thu, Jul 06, 2017 at 06:28:11AM +0000, unleashy via Digitalmars-d-learn wrote: > Hello. I am trying to compile this: > > --- > module asd.asd; > > abstract class Asd > { > void opCall(Args...)(Args args); > } > > @system unittest > { > class Foo : Asd > { > override void opCall(Args...)(Args args) > { > /* nothing */ > } > } > > Asd a = new Foo(); > > a(1, 2, 3); > } > --- [...]
Template functions cannot be virtual, and it's invalid to override a non-virtual function. Which version of the compiler are you using? I just tested on the latest dmd git HEAD, and it (correctly) tells me that it's illegal to override a non-virtual function. I'm surprised you got your code to compile at all. T -- My program has no bugs! Only unintentional features...