Weird combo of static function, templates, interfaces (that doesn't link)
    0xEAB 
    desisma at heidel.beer
       
    Sun Dec 30 13:05:33 UTC 2018
    
    
  
> void main()
> {
>     StaticThingy.register(new SomeAdapter());
>     StaticThingy.createSome!Dummy();
> }
>
>
> interface FooAdapter
> {
>     FooBundle!(Handle) createSome(Handle)();
> }
>
> private class SomeAdapter : FooAdapter
> {
>     Bundle createSome()
>     {
>         auto w = new Dummy();
>         auto c = new FooDummy();
>         auto b = Bundle(c, w);
>         return b;
>     }
> }
>
> struct StaticThingy
> {
> static:
>     FooBundle!(Handle) createSome(Handle)()
>     {
>         return fooAdapter.createSome!(Handle)();
>     }
>
> // ...
> error: undefined reference to 
> '_D9onlineapp10FooAdapter__T10createSomeTCQBn5DummyZQyMFZSQCd__T9FooBundleTQBiZQp'
> collect2: error: ld returned 1 exit status
> Error: linker exited with status 1
Hey :)
During playing around I came up with code similar to the example 
above.
As the title says, this code doesn't link.
For the full example please see: https://run.dlang.io/is/mr0u2i
- But should this even compile successfully?
- Does `SomeAdapter` even implement `FooAdapter` correctly?
  ~ Elias
    
    
More information about the Digitalmars-d-learn
mailing list