On Tuesday, 7 April 2026 at 23:48:37 UTC, Richard (Rikki) Andrew
Cattermole wrote:
On 07/04/2026 7:08 AM, matheus wrote:
Hello,
Back in C days I used to write code with function pointer to
avoid writing branches inside loops,
To avoid this:
for(;;){
if(opt == 1){ func_1(); }else{func_2()};
}
Or maybe using switch if there were more options...
So I used to do:
if(opt == 1){ fp = &func_1(); }else{ fp = &func_2()};
for(;;){
fp();
}
I would like to know if there is a different way of doing that
in D during RT execution and dynamic change of function
execution before the loops?
Thanks in advance,
Matheus.
How I typically do it:
```d
void outer() {
void inner(bool a, bool b)() {
for(;b;) {
static if (a) {}
}
}
if (cond1 && !cond2)
inner!(true, false);
else if (cond2 && !cond1)
inner!(false, true);
else if (cond1 && cond2)
inner!(true, true);
else
inner!(false, false);
}
```
But this is CT, my problem was to this during RT.
Thanks anyway for responding,
Matheus.