Doubt Branchless code
matheus
matheus at gmail.com
Wed Apr 8 00:18:02 UTC 2026
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.
More information about the Digitalmars-d-learn
mailing list