static switch

Ary Borenszweig ary at esperanto.org.ar
Wed Mar 5 11:27:54 PST 2014


On 3/5/14, 4:07 PM, deadalnix wrote:
> On Wednesday, 5 March 2014 at 12:51:23 UTC, Dominikus Dittes
> Scherkl wrote:
>> I wonder why there is no static switch (analogue to static if)?
>> Because especially if you overload a lot of operators (which is done e.g.
>> in the definition of complex and bigint) I would think something like
>>
>> T opOpAssign(string op, T)(T x) if(op=="+" || op=="-" || op=="*" ||
>> op=="/" || op=="%" || op=="^^" || op=="&" || op=="|" || op=="^" ||
>> op=="<<" || op==">>" || op==">>>")
>> {
>>    static switch(op)
>>    {
>>    case "+":
>>    case "-":
>>       ...
>>       break;
>>    case "*":
>>       ...
>>    }
>> }
>>
>> would look much better than
>>
>> {
>>    static if(op=="+" || op == "-")
>>    {
>>       ...
>>    }
>>    else static if(op == "*")
>>    {
>>       ...
>>    }
>>    else
>>    {
>>       ...
>>    }
>> }
>
> Constant folding will generate code like that. What does the
> static buys you ?

Readability.


More information about the Digitalmars-d mailing list