How to get address of a nested function?
Max Samukha
maxsamukha at gmail.com
Tue Nov 10 10:51:31 UTC 2020
We can get the compile time equivalent of a member function's
address by applying '&' to the function in a static context:
struct S {
void foo() {}
}
enum pfoo = &S.foo; // ok
void main() {
// now we can use the pointer to create, for example, a
delegate
S s;
void delegate() dg;
dg.ptr = &s;
dg.funcptr = pfoo;
dg();
}
However, we can't do that to a nested function:
void main() {
void foo() {
}
enum pfoo = &foo; // weird kind of an enum delegate;
pfoo.funcptr can't be accessed at compile time.
}
Is there a way to get a pointer to a non-static nested function?
More information about the Digitalmars-d-learn
mailing list