0 cost template instantiation

Adam D Ruppe destructionator at gmail.com
Thu Sep 30 02:11:25 UTC 2021


On Thursday, 30 September 2021 at 02:02:19 UTC, Hipreme wrote:
> Instead of writing
>
> myFunction = cast(typeof(myFunction))_loadSymbol(_dll, 
> "myFunction");
>
> I could write
>
> loadSymbol!myFunction;
>
> But if no other way is found of doing that, I will do the 
> massive rewriting.

---

void function() x;

void load(void* thing, string name) {
        // this lhs cast is the magic, the rhs cast unneeded in 
reality cuz GetProcAddress returns void* naturally
         * cast(void**) thing = cast(void*) 0xdeadbeef;
}

void main() {
         // no cast here but yes repeated name
         load(&x, "foo");

          // casts needed here just to do the comparison
         assert(cast(void*) x == cast(void*) 0xdeadbeef);
}

---


A little void casting inside the function can do the trick. You 
will have to pass the name separately though.


im off to bed ttyl


More information about the Digitalmars-d-learn mailing list