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.
  • Doubt Branchless... matheus via Digitalmars-d-learn
    • Re: Doubt B... matheus via Digitalmars-d-learn
    • Re: Doubt B... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: Dou... matheus via Digitalmars-d-learn
        • Re:... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn

Reply via email to