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