On 06/07/2017 7:28 AM, unleashy 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);
}
---
This file is under source/asd/asd.d and I'm compiling with `dmd
-unittest -main -ofasd.exe source\asd\asd.d -m32 -g` under Windows x64.
For some reason, after the successful compilation step, the linker then
complains:
---
OPTLINK (R) for Win32 Release 8.00.17
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
asd.obj(asd)
Error 42: Symbol Undefined
_D3asd3asd3Asd17__T6opCallTiTiTiZ6opCallMFiiiZv
Error: linker exited with status 1
---
Am I doing something wrong, or is this a linker bug?
Thanks!
Templates+classes = require function body.
Why? Templated methods are not virtual, they are final and cannot be
inherited (so its a little strange that the override is valid).