I have three modules a.d, b.d, and c.d:

file a.d:```
module i.a;

import i.c, i.b;

final class A {
public:
  void foo() {
    a.transmogrify();
  }
  S!void a;
}
```
--------------
file b.d:```
module i.b;

import i.a, i.c;

class B {
public:
  S!void b;
}
```
--------------
file c.d:```
module i.c;

struct C {}

struct S(T) {
  C transmogrify() {
    return C();
  }
}
```
--------------
When these modules compiled separately, I assume, both a.o and b.o contain a definition of i.c.S!void.S.transmogrify() instance. Is this correct? If so, how is the symbol redefinition resolved when the three object files are linked into a single executable?

Reply via email to